【例2.1】选择排序

【问题描述】
       输入n个数,将n个数按从小到大的顺序输出(n<=10000)入)。
【输入样例】
       8
       49 38 65 97 76 13 27 49
【输出样例】
       13 27 38 49 49 65 76 97
【分析】
       归纳上述排序过程,具体实现步骤如下:
        ①读入数据存放在a数组中。
        ②在a[1]~a[n]中选择值最小的元素,与第1位置元素交换,则把最小值元素放入a[1]中。
        ③在a[2]~a[n]中选择值最小的元素,与第2位置元素交换,则把最小值元素放入a[2]中,……
        ④直到第n-1个元素与第n个元素比较排序为止。
        程序实现方法:用两层循环完成算法,外层循环i控制当前序列最小值存放的数组位置,内层循环j控制从i+1到n序列中选择最小的元素所在位置k。
【参考程序】

#include <cstdio>
#include <iostream>
using namespace std;

const int MAXN = 10001;

int main() {
	int min, n;
	float temp, a[MAXN];
	cin >> n;
	for (int i=1; i<=n; i++) {			// 输入n个数 
		cin >> a[i];
	}
	
	for (int i=1; i<n; i++) {			// 选择排序 
		min = i; 
		for (int j=i+1; j<=n; j++) {
			if (a[min] > a[j]) {		// min记录较小元素的位置 
				min = j;
			}
		}
		if (i != min) {
			temp = a[i];
			a[i] = a[min];
			a[min] = temp;
		} 
	}
	
	for (int i=1; i<=n; i++) {
		cout << a[i] << " ";
	} 
	
	return 0;
}

发布了49 篇原创文章 · 获赞 0 · 访问量 1035

猜你喜欢

转载自blog.csdn.net/developer_zhb/article/details/105023485