选择排序的思想:固定位置找元素,即先找到数组中最小的,放在第一个位置,在找剩余元素中最小的,放在第二个位置……直到所有数据都有序排列。
这与插入排序算法的思想(固定元素找位置)恰恰相反。
具体的C++代码实现如下:
#include“stdafx.h”
#include <stdlib.h>
void choose_sort(int*a,int iSize)
{
for(int i=0;i<iSize;i++)
{
int min = a[i];
int iIndex = i;
for(int j=i+1;j<iSize;j++)
{
if(a[j] < min)
{
min = a[j];
iIndex = j;
}
}
int temp = a[i];
a[i] = min;
a[iIndex] = temp;
}
}
从以上的代码不难看出,寻找最小元素需要循环一次,排序也需要循环一次。所以该算法的时间复杂度为O(n2);
这意味着当n比较小的时候,该算法能保证一定的速度,但当n比较大的时候,算法所需的时间会增长很多,这点在使用是尤其要注意。