基本概念:是一种简单直观的排序算法,他的基本原理是:对于给定的一组记录,经过第一轮比较后得到最小的记录,
然后将记录与第一个记录的位置进行交换;接着对不包括第一个记录以外的其他记录进行第二轮排序,得到最小的记录
并与第二个记录进行位置交换;重负该过程,直到进行比较的记录只有一个为止。
简单选择排序特点:
最 大 特 点 :移动次数少。
时间复杂度:总共比较 n(n-1)/2 次 ,移动次数最多n-1, 时间复杂度为O(n2)
稳 定 性:不稳定
1 #include <iostream> 2 3 using namespace std; 4 5 void SelectSort(int *a, int n) 6 { 7 int i, j; 8 int temp = 0; 9 int flag = 0; 10 11 for (i = 0; i < n - 1; i++) 12 { 13 temp = a[i]; 14 flag = i; 15 for (j = i + 1; j < n; j++) 16 { 17 if (a[j] < temp) 18 { 19 temp = a[j]; 20 flag = j; 21 } 22 } 23 if (flag != i) 24 { 25 a[flag] = a[i]; 26 a[i] = temp; 27 } 28 } 29 } 30 31 int main() 32 { 33 int i = 0; 34 int a[] = {5, 4, 3, 6, 1, 9, 7, 0, 2, 8}; 35 36 int length = sizeof(a) / sizeof(a[0]); 37 38 SelectSort(a, length); 39 40 for (i = 0; i < length; i++) 41 { 42 printf("%d ", a[i]); 43 } 44 45 while(1); 46 47 return 0; 48 }