排序算法——选择排序

算法思想:

  • 思想和冒泡排序有点类似,都是在一次排序后把最小的元素放到最前面。但是过程不同,冒泡排序是通过相邻的比较和交换。而选择排序是通过对整体的选择。其实选择排序可以看成冒泡排序的优化,因为其目的相同,只是选择排序只有在确定了最小数的前提下才进行交换,大大减少了交换的次数。
  • 选择排序的时间复杂度为O(n^2)
  • 选择排序不是稳定的排序算法,举例说明:序列58539,第一遍选择第1个元素“5”会和元素“3”交换,那么原序列中的两个相同元素“5”之间的前后相对顺序就发生了改变。

举例:

4,2,3,1,5

第一趟选择:1 4 2 3 5

第二趟选择:1 2 4 3 5

第三趟选择:1 2 3 4 5

第四趟选择:1 2 3 4 5

代码:

 1 for (int j = 0; j <n-1;j++) {
 2      for (int i = j+1; i < n; i++) {
 3           int temp;
 4           if (a[j] > a[i]) {
 5           // change
 6           temp = a[j];
 7           a[j] = a[i];
 8           a[i] = temp;
 9         }
10    }
11 }    

 

posted @ 2020-04-09 11:04  PennyXia  阅读(152)  评论(0编辑  收藏  举报