夯实基础——选择排序

物理结构:数组

选择排序分析:

最优时间复杂度:O(n^2)

最坏时间复杂度:O(n^2)

平均时间复杂度:O(n^2)

最差空间复杂度:O(n)

稳定性:不稳定

选择排序函数:

int SelectSort(int a[],int length);

//选择排序
//每次选最小值放在最前面
int SelectSort(int a[],int length)
{
    int i,j,min;
    for(i=0;i<length;i++)
    {
        min=i;
        for(j=i;j<length;j++)
        {
            if(a[j]<a[min])
                min=j;
        }
        if(min!=i)
            swap(&a[min],&a[i]);
    }
}
时间: 2024-10-12 22:41:29

夯实基础——选择排序的相关文章

C基础—选择排序

#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 10 /* 初始化一个数组 */ void init_array(int a[], int n) { int i; srand(time(NULL)); for (i = 0; i < n; i++) a[i] = rand() % 100; } /* 对数组排序 */ void select_sort(int a[], int n

Java基础——选择排序、冒泡排序

1.选择排序 原理是直接从待排序数组里选择一个最小(或最大)的数字,每次都拿一个最小数字出来, 顺序放入新数组,直到全部拿完 代码演示: 1 public class Test3 { 2 public static void main(String[] args) { 3 int[] arr = { 3, 9, 81, 8, 5, 10 }; 4 selectSort(arr); 5 print(arr); 6 } 7 8 /* 选择排序:原理是第i个元素和剩余元素的比较次数 */ 9 publ

夯实基础——希尔排序

物理结构:数组 希尔排序分析: 最优时间复杂度:O(n) 顺序的情况下 最坏时间复杂度:O(nlog^2n) 平均时间复杂度:根据增量不同而不同 最坏空间复杂度:O(n) 稳定性:不稳定 希尔排序函数: int ShellSort(int a[],int length); //希尔排序,缩小增量的插入排序 int ShellSort(int a[],int length) { int incre=0,i,j,tmp; while(incre<length)//构造增量规则 { incre=inc

笔记二:计数排序、选择排序、冒泡排序、插入排序

计数排序 1. 名次 :所谓名次,通俗理解即为该元素在序列中排行老几的意思. 2..如何求名次:依次对每一个元素进行比较,若排在自己(该元素)前面的元素比自己大,则前面的元素在排行计数上加1,反之则自己加1. 3.利用附加数组的计数排序:根据自身名次重新整理一份排序序列存储在附加数组中,然后将附加数组值拷贝到原序列中. 1)代码: template<typename T> void SortClass<T>::rank(T a[], int n, int r[]) { //给数组a

算法基础之排序(2)--选择排序 改进

1 /********************************************************************************************************** 2 * Function : test 3 * Create Date : 2014/03/23 4 * Author : NTSK13 5 * Email : [email protected] 6 * Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性

基础算法之排序(2)--选择排序

1 /********************************************************************************************************** 2 * Function : test 3 * Create Date : 2014/03/23 4 * Author : NTSK13 5 * Email : [email protected] 6 * Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性

JAVA基础-数组的排序(选择排序和冒泡排序),总结精辟!!!

1.-------寄语 对于初学JAVA的同学来说,排序是在陌生不过的一个基础题了.但是由于自己刚刚步入学习JAVA的世界,很多东西不能很好的理解,导致自己虽然可以敲出代码或者大致能够想明白, 但是对于解决问题的思想并没有很好的深入.(其实一开始学习也没必要太刨根问底,等到自己有一定的基础了,有时间了再研究一下.抱着研究的态度感觉会更好一点.其实大部分目前的 开发者都是经过了一段时间的培训,在培训的过程中,课程速度特别快,有时候我们必须要“不拘小节”,掌握培训中的主流知识才是明智之举.如果你正在

java基础(16)、数组的高级应用--冒泡排序、选择排序

数组排序 目录 一. 冒泡排序 二. 选择排序 三. 优化选择排序 一. 冒泡排序 将数组元素按[从小到大排序]为例 思路:依次对临近的两个元素对比,将最大值放在数组最后:再将剩余的元素对比,大值放在剩余元素的最后. . . 以此循环,最后元素就是按从小到大排列. 1.1. 做之前,先了解这个操作:把数组的最大值放在末尾 将元素1和元素2对比,如果元素1的值大,则元素2和元素1的值互换(此时元素2为大值):再让元素2和元素3对比.  . ( 保留大值).  .  元素3和元素4对比 .  . 

选择排序基础(java实现)

算法实现: 红宝书版本: public class Selection { public static void sort(Comparable[] a) { int N=a.length; for (int i=0;i<N;i++) { int min=i; for(int j=i+1;j<N;j++) if (lessa([j],a[min])) min =j; exch(a,i,min); } } } 基于int数组的实现: public static void selectSort(i