Chinaunix首页 | 论坛 | 博客
  • 博客访问: 140958
  • 博文数量: 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-04 22:31:03

**转载请注明**

轮到最熟悉的bubble-sort了。

原理:
    每次比较相邻两数字,把这两个数进行排序,一轮后最大的到末尾。下一轮选出次大的。。。


C++代码:

点击(此处)折叠或打开

  1. #include <iostream>

  2. using namespace std;

  3. void BUBBLE_SORT( int*, int, int );

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

  6.     BUBBLE_SORT(a, 0, 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 BUBBLE_SORT( int* array, int start, int len ){
  13.     for ( int i = 1; i <= len - 1; i++ ){
  14.         for ( int j = start; j < start + len - 1 ; j++ ){
  15.             if ( array[j] > array[j+1] ){
  16.                 array[j] = array[j] - array[j+1];    //写了一个不需要额外内存的交换
  17.                 array[j+1] = array[j+1]+array[j];
  18.                 array[j] = array[j+1]-array[j];
  19.             }
  20.         }
  21.     }
  22. }

空间复杂度:
    O(1)

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

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