选择排序

mac2024-02-23  42

 

选择排序

思路:从前往后先选出低于各最小的元素放在第一位(或者说:每次在未排序的数字中选择最大的那个数字放在数组末尾),然后是选出第二个元素放在第二个,以此类推,直到选完.

下面的代码中i指针控制当前未排序数字的右边界,也是当前未排序数字中最大的元素应该放的位置,我们使用idx代表当前最大元素的下标。每次在比较的时候我们只更新下标,避免频繁的数组元素交换。

图解:

选择排序的算法:

void insertSort(int a[],int n) { for(int i=0;i<n;i++) { for(int j=i+1;j<n;j++) { if (a[i] > a[j]) swap(a[i], a[j]) } } } //上面的这个代码的意思是从前往后先确定一个元素,然后从确定的这个元素的下一个元素到后面元素进行遍历, //然后让这个i的元素依次与其后的每个元素进行对比,当前的i下标的元素大于j下标的元素。就换,而上面的 //代码是是让每个下标为i的元素与其后面的元素进行对比,如果大于,则交换,交换后,i再往后走。也就是 //每一步选一个最小数放在前面。

 

 

 

 

 

 

 

 

 

 

 

 

 

最新回复(0)