排序算法——选择排序

来源:互联网 发布:php万能小偷 编辑:程序博客网 时间:2024/05/22 02:10

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕。

最坏时间复杂度 O(n^2)

选择排序是不稳定的排序算法。例如5 8 5 2 9。第一次选择5 与 2交换 ,之后两个5的相对位置就改变了。 

Code:
  1. #include <stdio.h>   
  2.     
  3. void select_sort(int a[], int num)   
  4. {   
  5.   
  6.     int i, j, k, min, temp;   
  7.   
  8.     for (i = 0; i < num - 1; i++) {   
  9.         min = i;   
  10.         for (j = i + 1; j < num; j++) {   
  11.             if (a[min] > a[j]) {   
  12.                 min = j;   
  13.             }   
  14.         }   
  15.         temp = a[i];   
  16.         a[i] = a[min];   
  17.         a[min] = temp;   
  18.     }   
  19. }   
  20. void print(int a[], int num)   
  21. {   
  22.     int k;   
  23.     for (k = 0; k < num; k++)   
  24.         printf("%d ", a[k]);   
  25.     printf("/n");   
  26. }   
  27. int main()   
  28. {   
  29.     int i, num;   
  30.     int a[10] = {1,7,5,8,4,2,6,9,3,10};   
  31.     num = sizeof(a) / sizeof(int);   
  32.     select_sort(a, num);   
  33.     print(a, num);   
  34.     return 0;   
  35. }  

 8-18行代码,每次遍历记录最小值的下标,最终选取的是当前剩余序列的最小值。

原创粉丝点击