现在网上搜到的快排和我以前打的不太一样,感觉有点复杂,我用的快排是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. node.js自动化测试断言包assert的方法说明

    参考以下文档 http://yijiebuyi.com/blog/ca2c0edf447624bd4d527490c9fce369.html http://www.cnblogs.com/softlo ...

  2. Manacher's algorithm

    Manacher's algorithm 以\(O(n)\)的线性时间求一个字符串的最大回文子串. 1. 预处理 一个最棘手的问题是需要考虑最长回文子串的长度为奇数和偶数的情况.我们通过在任意两个字符 ...

  3. 利用Caffe做回归(regression)

    Caffe应该是目前深度学习领域应用最广泛的几大框架之一了,尤其是视觉领域.绝大多数用Caffe的人,应该用的都是基于分类的网络,但有的时候也许会有基于回归的视觉应用的需要,查了一下Caffe官网,还 ...

  4. struts2中的OGNL详解

    先了解一下OGNL的概念 OGNL的全名称Object Graph Navigation Language.全称为对象图导航语言,是一种表达式语言.使用这种表达式语言,你可以通过某种表达式语法,存取J ...

  5. 第3章 Linux常用命令(3)_文件搜索命令

    3. 文件搜索命令 3.1 文件搜索:find (1)find命令 命令名称 find 命令所在路径 /bin/find 执行权限 所有用户 语法 find [搜索范围] [-选项] [匹配条件] - ...

  6. BZOJ1925[SDOI2010]地精部落

    Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi, ...

  7. IT领域中哲学原理的应用——个体与整体

    个体与整体哲学原理在很多学科和领域中都会得到应用,今天就看看IT行业中有哪些地方应用了个体和整体的原理. IT行业可以分为硬件.软件.网络三个领域,我们可以分别针对这三个领域来看下. 硬件方面,最基本 ...

  8. Mysql完全手册(笔记一,底层与内置函数)

    1.MySQL由五个主子系统组成.协同工作,这五个主子系统是: (1)查询引擎 (2)存储管理器 (3)缓冲管理器 (4)事务管理器 (5)恢复管理器 查询引擎: 这个子系统包含三个相互关联的部件: ...

  9. HDU 3032 Nim or not Nim (sg函数)

    加强版的NIM游戏,多了一个操作,可以将一堆石子分成两堆非空的. 数据范围太大,打出sg表后找规律. # include <cstdio> # include <cstring> ...

  10. MVC5 + EF6 + Bootstrap3 (16) 客户端验证

    Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-client-side-validation.html 系列 ...