Chinaunix首页 | 论坛 | 博客
  • 博客访问: 146990
  • 博文数量: 56
  • 博客积分: 245
  • 博客等级: 二等列兵
  • 技术积分: 520
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-08 14:43
个人简介

慢慢来

文章分类

全部博文(56)

文章存档

2017年(5)

2016年(2)

2015年(6)

2014年(28)

2013年(5)

2012年(10)

我的朋友

分类: C/C++

2014-08-01 15:08:00

**转载请注明**

习题2.2-2提到选择排序(selection sort)




原理:每次从余下的数中选择最小的 放在前边

PS: 最好最坏情况都会进入两个for循环,区别就是第二个for循环里的if会不会进。都是n^2。

C++ 代码:

点击(此处)折叠或打开

  1. #include <iostream>

  2. using namespace std;

  3. void SELECTION_SORT( int*, int );

  4. int main(){
  5.     int a[] = {5,2,4,6,1,3};

  6.     SELECTION_SORT(a, sizeof(a)/sizeof(int));

  7.     for (int i = 0; i < sizeof(a)/sizeof(int); i++){
  8.         cout << a[i] << endl;
  9.     }
  10.     return 0;
  11. }

  12. void SELECTION_SORT( int* array, int len ){
  13.     for (int i = 0; i < len-1; i++){
  14.         int min = array[i];
  15.         int position = i;
  16.         for (int j = i+1; j < len; j++){
  17.             if (array[j] < min){
  18.                 min = array[j];
  19.                 position = j;
  20.             }
  21.         }
  22.         array[position] = array[i];
  23.         array[i] = min;
  24.     }
  25. }

运行结果:
    (跟插入排序一样,略)

空间复杂度:
    O(1)

时间复杂度:
    O(n^2)

阅读(268) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~