本文共 681 字,大约阅读时间需要 2 分钟。
选择排序---每次从未排序部分选择一个最大(或最小)的元素,放到排序部分。
思路:
首先:int t = n;//n为数组最大下标
1. 从右向左,前n-1个与第t个比较,如果大于第t个,就更新t的值,最后交换第t个与第n个元素(最大值(或最小值)放在了n位置)
2. t = n - 1; 从右向左前n-2个元素与第t个元素比较,如果大于第t个元素的值,就更新t的值,最后交换t与n-2的元素(前n-1个中最大值放在了n-1位置)
3. 重复上述步骤,直到 n-i >0
选择排序代码示例
// sf.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include//选择排序void select(int *a, int n){ for (int i=n-1;i>=1;i--) { int t = i; for (int j=i-1;j>=0;j--) { if (a[j] > a[t]) { t = j; } } int temp = a[i]; a[i] = a[t]; a[t] = temp; }}int _tmain(int argc, _TCHAR* argv[]){ int a[10] = {54, 62, 34, 1, 38, 14, 78, 4, 65, 9}; select(a, 10); for (int i=0;i<10;i++) { printf("%d\n", a[i]); } system("pause"); return 0;}
转载地址:http://uzxui.baihongyu.com/