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

 #include<stdio.h>
#define MAXN 10000
int a[MAXN];
int n;
void Mysort(int l, int r) {
int x,y,mid,t;
mid = a[(l+r)/];
x=l;
y=r;
do {
while(a[x]<mid)x++;
while(a[y]>mid)y--;
if(x<=y) {
t=a[x];
a[x]=a[y];
a[y]=t;
x++;
y--;
}
} while(x<=y);
if(l<y)Mysort(l,y);
if(x<r)Mysort(x,r);
}
int main() {
int i;
scanf("%d",&n);
for(i=; i<n; i++) {
scanf("%d",&a[i]);
}
Mysort(,n-);
for(i=; i<n; i++)printf("%d ",a[i]);
return ;
}

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

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

更新一下:

算导快排:

 int mypartition(int a[], int lo, int hi){
int pivot = a[hi];
int i = lo;
for(int j=lo; j<hi; j++){
if(a[j]<=pivot){
swap(a[i],a[j]);
i++;
}
}
swap(a[i],a[hi]);
return i;
} void mysort(int a[], int lo, int hi){
if(lo>=hi)return;
int i = mypartition(a, lo, hi);
mysort(a, lo, i-);
mysort(a, i+, hi);
}

另一种快排,和最上面那个差不多,据说算导的swap次数太多,效率不如这种。这个是hdu1425代码

 #include<cstdio>
#include<algorithm>
using namespace std; int a[]; int mypartition(int a[], int lo, int hi) {
int p = a[lo];
int i=lo-;
int j=hi+;
while(true) {
do {
i++;
} while(a[i]<p);
do {
j--;
} while(a[j]>p);
if(i>=j)return j;
swap(a[i],a[j]);
}
} void mysort(int a[], int lo, int hi) {
if(lo>=hi)return;
int i = mypartition(a, lo, hi);
mysort(a, lo, i);
mysort(a, i+, hi);
} int main() {
int n,m;
while(scanf("%d%d",&n,&m)!=EOF) {
for(int i=; i<n; i++) scanf("%d",&a[i]);
mysort(a,,n-);
if(m>)printf("%d",a[n-]);
for(int i=; i<m; i++) {
printf(" %d",a[n--i]);
}
puts("");
}
return ;
}

快排 快速排序 qsort quicksort C语言的更多相关文章

  1. 快排 - 快速排序算法 (Chinar出品 简单易懂)

    Quicksort 快排的简单讲解 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  2. 数组第K小数问题 及其对于 快排和堆排 的相关优化比较

    题目描述 给定一个整数数组a[0,...,n-1],求数组中第k小数 输入描述 首先输入数组长度n和k,其中1<=n<=5000, 1<=k<=n 然后输出n个整形元素,每个数 ...

  3. php中实现快排与冒泡排序

    快排 <?php function quicksort($str){ if(count($str)<=1) return $str;//如果个数不大于一,直接返回 $key=$str[0] ...

  4. c语言中使用自带的qsort(结构体排序)+ 快排

    c中没有自带的sort函数emm 不过有自带的qsort函数 (其实用法都差不多(只是我经常以为c中有sort 头文件要用 #include <stdlib.h> 一定要重新把指针指向的值 ...

  5. 数据结构65:快速排序算法(QSort,快排)

    上节介绍了如何使用起泡排序的思想对无序表中的记录按照一定的规则进行排序,本节再介绍一种排序算法——快速排序算法(Quick Sort). C语言中自带函数库中就有快速排序——qsort函数 ,包含在 ...

  6. 【C语言编程入门笔记】排序算法之快速排序,一文轻松掌握快排!

    排序算法一直是c语言重点,各个算法适应不用的环境,同时,在面试时,排序算法也是经常被问到的.今天我们介绍下快速排序,简称就是快排. 1.快速排序思想: 快排使用 分治法 (Divide and con ...

  7. qsort 快排函数(C语言)

    qsort 快排函数(C语言) 函数原型 void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, ...

  8. C语言快排

    C语言使用快排的方式有两种,1.直接用库函数stdlib.h里的qsort函数 2.自己编写快排代码(第一种方便,第二种较为自由) qsort 的函数原型是:void qsort(void*base, ...

  9. poj1007 qsort快排

    这道题比较简单,但通过这个题我学会了使用c++内置的qsort函数用法,收获还是很大的! 首先简要介绍一下qsort函数. 1.它是快速排序,所以就是不稳定的.(不稳定意思就是张三.李四成绩都是90, ...

随机推荐

  1. Java基础知识笔记(七:接口、变量作用域和参数传递)

    一.接口 Java语言不允许一个子类拥有多个直接父类,即任何子类只能有一个直接父类.但允许一个类实现多个接口,即在定义类的接口名称列表中可以包含1个或多个接口名称,从而实现多重继承的特性.接口的定义格 ...

  2. 报表开发导出各种格式文件的API

    文件输出的多样性,准确性和稳定性对于我们常用的报表软件来说很重要.报表的输入是指从报表的模板文件(XML格式的)创建WorkBook对象,输出则指将报表保存为各种格式文件,比如Pdf.Excel.Wo ...

  3. o(1)复杂度之双边滤波算法的原理、流程、实现及效果。

    一.引言     双边滤波在图像处理领域中有着广泛的应用,比如去噪.去马赛克.光流估计等等,最近,比较流行的Non-Local算法也可以看成是双边滤波的一种扩展.自从Tomasi et al等人提出该 ...

  4. 更为简单的Ctrl+S自动刷新浏览器工具-LinrF5

    一款自动刷新浏览器的小工具,它通过监听用户的按键,如果在键盘按下 Ctrl+S ,则自动刷新浏览器,操作十分简单,前端开发必备神器,快速提升工作效率,支持IE.火狐以及最新版的chrome33.之前我 ...

  5. 【2016-11-7】【坚持学习】【Day22】【Oracle 分页查询】

    方法1: select * from (select rownum rn, temp.* from ( +sqlText+ ) temp ) where rn > "+ start + ...

  6. POJ1947 Rebuilding Roads[树形背包]

    Rebuilding Roads Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 11495   Accepted: 5276 ...

  7. NOIP模拟赛20161114

    幸运串 题意:长度为n,字符集大小为m的字符串中有多少不同的不含回文的串 n,m<10^9 我靠这不就是萌数的DP部分吗 有规律 f[2][j][k]=1 f[i][j][k]=sigma{f[ ...

  8. thinkphp

    U方法: 模板导入后,先在浏览器执行index.php文件,当出现下图时,框架中的内容才可以出现. 增加admin后台文件夹: 连接数据库:可以使用pdo的方式连接

  9. quartz集群分布式(并发)部署解决方案-Spring

    项目中使用分布式并发部署定时任务,多台跨JVM,按照常理逻辑每个JVM的定时任务会各自运行,这样就会存在问题,多台分布式JVM机器的应用服务同时干活,一个是加重服务负担,另外一个是存在严重的逻辑问题, ...

  10. centos 7 安装音乐播放器(亲测可用)(转载)

    http://www.cnblogs.com/boyiliushui/p/4530625.html