- 选择排序:
- 描述:选出数组中最小的元素,与数组的第一个元素交换;然后选择出数组中次小的元素,与与第二个元素交换,直到完成
- 选择排序需要比较N(N-1)/2次,即N2次,而交换则只需要N-1次
- 对于是否已经排好序,或者随机文件,所花费的时间是一致的,即执行时间具有强迫性
- 选择排序应用在数据项比较大,键比较小的情况下,因为此时移动元素花费时间较多,而对于其他排序算法,元素移动频繁的多
- 程序:
template <class Item>
void sort(Item a[], int left, int right)
{
int i, j;
int min;
for(i=left; i<right; i++)
{
min = i;
for(j=i+1; j<=right; j++)
if(a[j]<a[min]) min=j;
exch(a[i],a[min]);
}
}
void sort(Item a[], int left, int right)
{
int i, j;
int min;
for(i=left; i<right; i++)
{
min = i;
for(j=i+1; j<=right; j++)
if(a[j]<a[min]) min=j;
exch(a[i],a[min]);
}
}