基本概念:是一种简单直观的排序算法,他的基本原理是:对于给定的一组记录,经过第一轮比较后得到最小的记录,

然后将记录与第一个记录的位置进行交换;接着对不包括第一个记录以外的其他记录进行第二轮排序,得到最小的记录

并与第二个记录进行位置交换;重负该过程,直到进行比较的记录只有一个为止。

 

简单选择排序特点:

最 大 特 点 :移动次数少。

时间复杂度:总共比较 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 }