首页 > 编程知识 正文

数据结构排序算法代码,数据结构内部排序算法比较

时间:2023-05-05 14:07:41 阅读:147710 作者:4782

选择排序基本思想。 每次从要排序的元素中选择最大(最小)元素时,它都会存储在序列末尾(开头)的位置,直到要排序的元素按顺序排列。

选择排序算法后,排序将通过选择和交换进行。 排序过程如下。

首先从排序对象的要素中选择最大的数据,将其和比特与最后位置的数据进行交换; 接着,从剩下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) ) ) ) ) )的空间复杂性。

稳定性:不稳定

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。