选择排序
思路:从前往后先选出低于各最小的元素放在第一位(或者说:每次在未排序的数字中选择最大的那个数字放在数组末尾),然后是选出第二个元素放在第二个,以此类推,直到选完.
下面的代码中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再往后走。也就是
//每一步选一个最小数放在前面。