简单选择排序

该博客详细介绍了选择排序算法的实现过程,包括一个带有SelectMinKey辅助函数的C++实现。博主通过SelectSort函数展示了如何遍历数组并找到每个位置上的最小值,然后进行交换以完成排序。在SelectMinKey函数中,博主指出了可能存在的不稳定因素。最后,博客给出了完整的排序代码并在main函数中进行了测试。
摘要由CSDN通过智能技术生成
#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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值