码迷,mamicode.com
首页 > 编程语言 > 详细

快排 快速排序 qsort quicksort C语言

时间:2015-04-14 00:28:51      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

现在网上搜到的快排和我以前打的不太一样,感觉有点复杂,我用的快排是FreePascal里/demo/text/qsort.pp的风格,感觉特别简洁。

 1 #include<stdio.h>
 2 #define MAXN 10000
 3 int a[MAXN];
 4 int n;
 5 void Mysort(int l, int r) {
 6     int x,y,mid,t;
 7     mid = a[(l+r)/2];
 8     x=l;
 9     y=r;
10     do {
11         while(a[x]<mid)x++;
12         while(a[y]>mid)y--;
13         if(x<=y) {
14             t=a[x];
15             a[x]=a[y];
16             a[y]=t;
17             x++;
18             y--;
19         }
20     } while(x<=y);
21     if(l<y)Mysort(l,y);
22     if(x<r)Mysort(x,r);
23 }
24 int main() {
25     int i;
26     scanf("%d",&n);
27     for(i=0; i<n; i++) {
28         scanf("%d",&a[i]);
29     }
30     Mysort(0,n-1);
31     for(i=0; i<n; i++)printf("%d ",a[i]);
32     return 0;
33 }

(其中(x+y)/2可以写成(x+y)>>1提升速度

 

(最近要实习生面试了,复习一下基础算法。之前排序基本都用STL的sort了,快排都快忘了,没想到我还是一遍就打出来了蛤铪哈

快排 快速排序 qsort quicksort C语言

标签:

原文地址:http://www.cnblogs.com/yuiffy/p/4423666.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!