Chinaunix首页 | 论坛 | 博客
  • 博客访问: 445095
  • 博文数量: 138
  • 博客积分: 4114
  • 博客等级: 上校
  • 技术积分: 1341
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-14 20:41
文章分类

全部博文(138)

文章存档

2014年(1)

2013年(2)

2012年(78)

2011年(13)

2010年(34)

2009年(10)

我的朋友

分类: LINUX

2012-04-17 16:15:44

一个实现


  1. /*
  2.  *
  3.  * 快排的一个实现
  4.  *
  5.  */


  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <time.h>

  9. void q_sort(int a[], int begin, int end)
  10. {
  11.     int partion=-1;
  12.     if (begin < end){
  13.         partion=q_p(a,begin, end);
  14.         q_sort(a, begin, partion - 1);
  15.         q_sort(a, partion + 1, end);
  16.     }

  17. }

  18. void display(int *a, int len);

  19. int q_p(int a[], int begin, int end)
  20. {
  21.     int x=a[end];
  22.     int i=begin -1;
  23.     int j =0;
  24.     int temp = 0;
  25.     for (j=begin;j <= end -1; j++){
  26.         if (a[j] <= x) {
  27.             i++;
  28.             // a[i]<->a[j]
  29.             temp = a[j];
  30.             a[j]=a[i];
  31.             a[i]=temp;
  32.         }
  33.     }
  34.     // a[end]<->a[i+1]
  35.     temp=a[end];
  36.     a[end]=a[i+1];
  37.     a[i+1]=temp;

  38.     return i+1;
  39. }

  40. void display(int *a, int len)
  41. {
  42.     int i = 0;
  43.     for (i=0; i < len; i++){
  44.         printf("a[%d]=%d\n", i, a[i]);
  45.     }
  46. }

  47. #define my_random(x) (rand()%x)

  48. int main()
  49. {
  50. //    int a[]={2,5,3,1,7,4,9,6};
  51.     int i =0;
  52.     int a[100]={0};
  53.     srand((int)time(0));
  54.     int len = sizeof(a)/sizeof(int);
  55.     for (i=0; i < len; i++) {
  56.         a[i]=my_random(1000);
  57.     }
  58.     display(a, len);
  59.     int begin=0;
  60.     q_sort(a, begin, len -1);
  61.     puts("===========");
  62.     display(a, len);

  63.     return 0;
  64. }

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

上一篇:socket ipc

下一篇:nginx 事件模型

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