思想:
每次选取最小或最大的数放在已排序的集合后面
完整代码
#include <stdio.h> void PrintSort(int * a, int n) { printf(" "); int i = 0; for(i=0; i<n; i++) { printf(" %d ", a[i]); } printf(" "); } void swap(int * a, int * b) { int t = *a; *a = *b; *b = t; } // 每次选取最小或最大的数放在已排序的集合后面 void SelectSort(int * a, int n) { int i, j, min; for (i=0; i<n; i++) { min = i; // 设置最小值为第一个数 for(j=i+1; j<n; j++) { if (a[j] < a[min]) { min = j; } } swap(&a[min], &a[i]); } } void main() { int a[8] = {9, 2, 1, 3, 8, 4, 7, 6}; SelectSort(a, 8); PrintSort(a, 8); }