思想:每经过一趟比较就找出一个最小值,与待排序列最前面的位置互换即可。
算法分析:时间复杂度O(n2);稳定性:不稳定。
1 #include <stdio.h> 2 3 void SelectSort(int a[], int len) 4 { 5 int i, j, k, tmp; 6 for (i = 0; i < len - 1; i++) 7 { 8 k = i; 9 for (j = i + 1; j < len; j++) 10 { 11 if (a[j] < a[k]) 12 { 13 k = j; 14 } 15 } 16 if (i != k) 17 { 18 tmp = a[i]; 19 a[i] = a[k]; 20 a[k] = tmp; 21 } 22 } 23 } 24 25 int main(void) 26 { 27 int a[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; 28 SelectSort(a, 11); 29 30 for (int i = 0; i < sizeof(a) / sizeof(int); i++) 31 { 32 printf("%d ", a[i]); 33 } 34 printf("\n"); 35 36 return 0; 37 }
时间: 2024-11-08 21:00:00