关于选择排序,它不同于比较,也不同于插入,它的核心是,选,怎么选?
很简单,每次,选到最小的和第一个交换,前面排行的,就直接忽略,相对于,谁说最小的?去第一位,谁是第二小的?去第二,依次,到最后,
所以看代码,很简单:
#include<iostream>
using namespace std;
template <class T>
void select(T p[],int n){
int i,j,k;
T d;
for(i=0;i<n-1;i++){
k=i;
for(j=i+1;j<n;j++)
if(p[j]<p[k]) k=j;
if(k!=j){
d=p[i];p[i]=p[k];p[k]=d;
}
}
return;
}
例子,还是老规矩,直接调用函数select()就可以了。
这都是基本排序。