算法二:选择排序

选择排序:选择一个最大或者最小的元素放到起始位置,直到排完为止。(不稳定)

如有一组数据:3,6,2,1,9

->1,6,2,3,9

->1,2,6,3,9

->1,2,3,6,9

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7         int a [] = {3,2,1,6,9};
 8         int min;
 9         for(int i = 0;i < sizeof(a)/4-1;i++)
10         {
11               min = i;
12               for(int j = i+1; j <sizeof(a)/4;j++)
13               {
14                      if(a[i] > a[j])
15                                min = j;
16               }
17               if(min != i)
18               {
19                   int temp = a[min];
20                   a[min] = a[i];
21                   a[i] = temp;
22               }
23         }
24        for(int i = 0; i<sizeof(a)/4;i++)
25               printf("%d   ",a[i]);
26 }                                 

简单排序的时间复杂度为O(N2);空间复杂度为O(1)选择排序是一种不稳定的排序.

posted on 2016-02-26 12:53  xiao_ma  阅读(115)  评论(0编辑  收藏  举报