#include<iostream>
#include<algorithm>
#define INF 0x7fffffff
using namespace std;
#define MaxSize 6
int num[MaxSize]={10,5,4,9,3,8};
int SelectMinKey(int i);
void SelectSort(){
for(int i=0;i<MaxSize;i++){//从前往后计数,已经选择了多少个最大//次大值元素
int j=SelectMinKey(i);//找从i到length最小的元素//是否包含i有待商榷
if(i!=j) swap(num[i],num[j]); //带上i保证一定有正常的返回值 免去判断步骤
}
}
int SelectMinKey(int i){//这里是极不好的范例,这里多一个参数只是为了没有 MaxSize定义时参数的完整性 int SelectMinKey(int i,int MaxSize)
int _min=INF;int flag=i;//这里是后写的,有这个可以把<=_min变成<_min,这不就稳定了!!
for(int j=i;j<MaxSize;j++){
if(num[j]<_min){_min=num[j];flag=j;} //这里为什么加等于呢,是因为加上了i判定//这样不太稳定,总是会找最远的i(如果没有比i小的)做匹配
}
return flag;
}
int main(void){
SelectSort();
for(int i=0;i<6;i++){
cout<<num[i]<<" ";
}
return 0;
}
简单选择排序
最新推荐文章于 2024-10-10 22:04:37 发布
该博客详细介绍了选择排序算法的实现过程,包括一个带有SelectMinKey辅助函数的C++实现。博主通过SelectSort函数展示了如何遍历数组并找到每个位置上的最小值,然后进行交换以完成排序。在SelectMinKey函数中,博主指出了可能存在的不稳定因素。最后,博客给出了完整的排序代码并在main函数中进行了测试。
摘要由CSDN通过智能技术生成