template <class T>
//leastIndex是用来标志最小下标的,
//i,j是用来循环的
void selectionSort(T a[],int n){
for(int i=0;i<n-1;i++){ //这里为什么是n-1,因为当你只剩下最后一个元素的时候,它肯定就是最大的嘛。
int leastIndex = i; //假设每次未排序的序列都是第一个为最小值,已经比较过的数字,不是未排序,的序列哦
//将它和后面的数字比较找到最小的数字,进而进行交换
for(int j=i+1;j<n;j++){ //这里为什么是j+1,因为a[leastIndex],不需要和自己比较呀,
if(a[leastIndex]>a[j]){
leastIndex = j;//找到未排序序列最小的下标值
}
}
//将找到的最小值交换到未排序序列的首位
T temp;
temp = a[i];
a[i] = a[leastIndex];
a[leastIndex] =temp;
}
}
c++直接选择排序详细解答
最新推荐文章于 2024-04-23 23:57:04 发布