Chinaunix首页 | 论坛 | 博客
  • 博客访问: 225904
  • 博文数量: 80
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 781
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-08 10:41
个人简介

爱莉清

文章分类

全部博文(80)

文章存档

2018年(1)

2017年(18)

2016年(49)

2015年(7)

2014年(5)

我的朋友

分类: C/C++

2018-04-24 09:59:11



快速排序代码实现的原理主要是调用递归,将问题细分解决。然后就是注意处理边界问题。

代码

点击(此处)折叠或打开

  1. #include <stdio.h>


  2. int buff10[10] = {4,0,2,8,9,5,7,3,6,1};
  3. int buff20[20] = {8,6,7,1,4,9,2,0,3,5,14,19,11,17,12,13,10,18,15,16};

  4. void show(int *data,int size);

  5. /******************************************************
  6.                      快速排序
  7. ******************************************************/
  8. void quickSort(int *data ,int a,int b)
  9. {
  10.    int i,j,temp;

  11.    if (a>=b ) { //边界检测
  12.       return ;
  13.    }
  14.    i = a;
  15.    j = b;
  16.    temp = data[a];

  17. //    if(i>=j)return ;

  18.    while ( i < j ) {

  19.       //从右向左
  20.       while (i<j) {
  21.          
  22.          if (data[j] <= temp) {
  23.             data[i] = data[j];
  24.             data[j] = temp;
  25.             break;
  26.          }
  27.          j--;
  28.       }
  29.       show(data,10);
  30.       //从左向右
  31.       while (i<j) {
  32.          
  33.          if (data[i] >= temp) {
  34.             data[j] = data[i];
  35.             data[i] = temp;
  36.             break;
  37.          }
  38.          i++;
  39.       }
  40.      show(data,10);

  41.    }
  42.    
  43.    quickSort(data,a,i-1); //递归处理子部分 左半边
  44.    quickSort(data,i+1,b); //右半边
  45.     
  46.   

  47. }



  48. int main()
  49. {
  50.    int i;
  51.    show(buff10,10);
  52.    quickSort(buff10,0,10-1);

  53. /* printf("buff10: ");
  54.    for (i=0;i<10;i++) {
  55.       printf("%d ",buff10[i]);
  56.    }
  57.    printf("\n");

  58.    quickSort(buff20,0,20-1);
  59.    printf("buff20: ");
  60.    for (i=0;i<20;i++) {
  61.       printf("%d ",buff20[i]);
  62.    }
  63.    printf("\n");
  64. */
  65.    return 0;
  66. }


  67. void show(int *data,int size)
  68. {
  69.    int i;
  70.    printf("data: ");
  71.    for (i=0;i<size;i++) {
  72.       printf("%d ",data[i]);
  73.    }
  74.    printf("\n");
  75. }
运行结果:
data: 4 0 2 8 9 5 7 3 6 1 
data: 1 0 2 8 9 5 7 3 6 4 
data: 1 0 2 4 9 5 7 3 6 8 
data: 1 0 2 3 9 5 7 4 6 8 
data: 1 0 2 3 4 5 7 9 6 8 
data: 1 0 2 3 4 5 7 9 6 8 
data: 1 0 2 3 4 5 7 9 6 8 
-------------------------
data: 0 1 2 3 4 5 7 9 6 8 
data: 0 1 2 3 4 5 7 9 6 8 
-------------------------
data: 0 1 2 3 4 5 7 9 6 8 
data: 0 1 2 3 4 5 7 9 6 8 
-------------------------
data: 0 1 2 3 4 5 7 9 6 8 
data: 0 1 2 3 4 5 7 9 6 8 
-------------------------
data: 0 1 2 3 4 5 6 9 7 8 
data: 0 1 2 3 4 5 6 7 9 8 
data: 0 1 2 3 4 5 6 7 9 8 
data: 0 1 2 3 4 5 6 7 9 8 
-------------------------
data: 0 1 2 3 4 5 6 7 8 9 
data: 0 1 2 3 4 5 6 7 8 9 
-------------------------


阅读(1273) | 评论(0) | 转发(0) |
0

上一篇:一阶互补滤波和卡尔曼滤波数据比较

下一篇:没有了

给主人留下些什么吧!~~