算法>dotcpp-----问题 1023:选择排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41092262/article/details/80330066

#2018-5-15  22:10

#武汉工程大学邮电与信息工程学院邮科院校区

#软件工程1604谷子毅


提示:如果文中链接失效或有疑惑,请留言,我会在看到的第一时间帮助解决,谢谢支持!


问题 1023: C语言程序设计教程(第三版)课后习题7.2

时间限制: 1Sec 内存限制: 128MB 

题目描述
用选择法对10个整数从小到大排序。
输入
输出
排序好的10个整数
样例输入
4 85  3 234 45 345 345 122 30 12
样例输出
3
4
12
30
45
85
122
234
345
345


选择排序的原理是每一次从无序组的数据元素中选出最小(或最大)的一个元素,存放在无序组的起始位置,无序组元素减少,有序组元素增加,直到全部待排序的数据元素排完。

#include<stdio.h>  
void SelectionSort(int *num,int len){  
	int i = 0;  
	int min = 0;  
	int j = 0;  
	int tmp = 0;  
	for(i = 0; i < len-1; i++)  
	{  
		min = i; //每次将min置成无序组起始位置元素下标
		for(j = i; j < len; j++){  
			if(num[min]>num[j]){  
				min = j;  
			}
		}  
		if(min != i){//如果最小元素不是无序组起始位置元素,则与起始元素交换位置   
			tmp = num[min];  
			num[min] = num[i];  
			num[i] = tmp;  
		}  
	}  
}  
  
int main(){  
	int num[10] = {4, 85, 3, 234, 45, 345, 345, 122, 30, 12};  
	int i = 0;
	int len = sizeof(num)/sizeof(num[0]);
	/*学会sizeof求数组大小,高手进阶
	好处是如果改变数组的大小,这里的代
	码也不用修改,对大程序维护很有帮助*/ 
	SelectionSort(num, len);   
	for(i = 0; i < len-1; i++){  
		printf("%d\n",num[i]);
	}
	printf("%d", num[i]);//注意最后一行不该有\n 
	return 0;  
}




阅读更多

扫码向博主提问

Guzi499

不问的人永远和愚昧在一起
去开通我的Chat快问
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页