选择排序 回顾

选择排序的交换操作介于 0 ~ (n - 1) 次之间。

选择排序的比较操作为 n (n - 1) / 2 次。

选择排序的赋值操作介于 0 ~ 3 (n - 1) 次之间。

比较次数O(n^2);交换次数O(n)。

#include<iostream>
using namespace std;
int main() { 
	//每一趟选最小的放到前面来
	int a[] = {1,5,3,2,0,2};
	int n = 6 , t = 0;
	for(int i=0;i<n-1;i++) {
		int max_i = i ; //保存最大的索引位置 
		for(int j=i+1;j<n;j++) { //在i+1到n-1的范围内找比i位置更小的 
			if(a[j] < a[max_i]) {
				max_i = j;
			}
		}
		//如果最大索引记录还是i,没找到更小的话,就不用交换啦 
		if(max_i != i) {
			t = a[i];
			a[i] = a[max_i];
			a[max_i] = t;
		} 
	}
	for(int i=0;i<n;i++) cout<<a[i]<<" "; 
	return 0;
} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值