选择排序基本思想。 每次从要排序的元素中选择最大(最小)元素时,它都会存储在序列末尾(开头)的位置,直到要排序的元素按顺序排列。
选择排序算法后,排序将通过选择和交换进行。 排序过程如下。
首先从排序对象的要素中选择最大的数据,将其和比特与最后位置的数据进行交换; 接着,从剩下size-1个数据中选择次大的1个要素,与倒数第2个位置进行数据交换; 然后,这样重复直到最后两个数据的交换完成,按照从小到大的顺序完成排序
代码按以下方式实现:
voidswap(int*left,int* right ) {int temp=*left; *left=*right; *right=temp; }voidselectsort(int*Array,int size ) for ) intI=0; i size - 1; I ) {int maxPos=0; for(intj=1; j size - i; j () if ) Array[j]Array[MaxPos] ) maxPos=j; (if ) MaxPos!=size - 1 - i ) swap(array[MaxPos],array[size - i - 1]; }优化排序算法选择的代码如下:
同时可以找到最大最小位置
将最大数量移动到末尾
将最小数量移动到开头
//voidselectsort(int*array,int size ) {int begin=0,end=size - 1; wile(beginend )//同时寻找最大最小元素位置的int minPos=begin; int maxPos=begin; int index=begin 1; while(index=end ) if ) array[index]array[MaxPos] ) maxPos=index; 阵列[索引]阵列[ min pos ] (if ) min pos=索引; 索引; //注意:最右边的位置可能存储了当前的最小值if(MaxPos )!=end ) swap(array[MaxPos],array[end]; //当最右侧可能存储了当前的最小值时,通过上述交换,更新最小值的位置发生了变化的minPos的值if (min pos!=end ) minPos=maxPos; if (最小销售点!=begin ) swap(array[minpos],array[begin] ); 瓶子; --end; }时间复杂度: o(n )2) ) ) ) ) ) ) ) ) )时间复杂度:0) )
空间复杂性: o(1) ) ) ) ) )的空间复杂性。
稳定性:不稳定