Quick Sort(快排)

这是挖坑填补法的演示
快排之挖坑填补法:
void Quick(int top/*起始位置*/,int end/*末尾位置*/,int arr[])//挖坑填补法
{
int i=top,j=end,mark;//i是记住前面的坑 j记住后面的坑 mark记住标准值 mark=arr[top];//以起始位置作为标准值,同时起始点成为第一个坑
if(top>=end)return;
while(i<j)
{
while(i<j)//从后向前找比标准值小的值并且把这个值赋予坑,此点成为新的坑
{
if(arr[j]<mark)
{
arr[i]=arr[j]; i++;//前面的坑向后移动一位开始找
break;
}
j--;
}
while(i<j)//从前向后找比标准值大的值并且把这个值赋予坑此点成为新的坑 {
if(arr[i]>mark)
{
arr[j]=arr[i];
j--;//后面的坑向前移动一位开始找 break;
}
i++;
} }
arr[j]=mark;//此时的下标就是标记值的最终位置,他的前面都比他小后面都比他大
Quick(top,i-,arr);//递归
Quick(j+,end,arr);
}
快排之区间分割法:

int sch_sect(int arr[],int j,int top)//区间分割法
{
int s=j+;
while(j>)
{
if(arr[j]>arr[top])//arr[top]就是标准值
{
if(j!=--s)//判断是否指向一个位置,(因为指向一个位置异或符号会使结果为0)
{
arr[j]=arr[j]^arr[s];
arr[s]=arr[s]^arr[j];
arr[j]=arr[s]^arr[j];
} }
j--;
}
s--;
arr[top]=arr[s];//现将最终点的值赋予标准点,函数结束后将标准点的值赋予最终点
return s;
}
void Quick(int top/*起始位置*/,int end/*末尾位置*/,int arr[])
{
int i=top,j=end,mark;//i是记住前面的坑 j记住后面的坑 mark记住坑的值 mark=arr[top];//以起始位置作为坑
if(top>=end)return;
i=sch_sect(arr,end,top);
j=i;
arr[j]=mark;//此时的下标就是标记值的最终位置,他的前面都比他小后面都比他大
Quick(top,i-,arr);//递归
Quick(j+,end,arr);
}
快排是比较最少的一种排序方法
如果数组数量过少的时候直接使用插入排序而不选择快排
Quick Sort(快排)的更多相关文章
- HDU1425 <sort 快排>
给你n个整数,请按从大到小的顺序输出其中前m大的数. 每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,5000 ...
- sort 快排解决百万级的排序
问题:给n个整数,按从大到小的顺序,输出前m大的整数0<m,n<1000000,每个整数[-500000,500000]输入:5 33 -35 92 213 -644输出:213 92 3 ...
- 函数模拟sort快排
设计一个对一维数组进行排序的sort函数,并调用它实现数组排序 思路:函数调用不止调用一个,最主要对函数不熟悉: #include<stdio.h> #define N 10 int ma ...
- java链表实现快排
链表文件 package sort; public class SqList { public int LIST_INIT_SIZE = 8;//链表的原始大小 private int I ...
- 结构体快排回顾(sort)
一般来说,我做竞赛的时候排序一般用快排 很快很方便 普通sort(从小到大) sort(a,a+n); 直接贴一段代码吧,包含了vector,sort,结构体等简单东西综合 #include < ...
- JavaScript快排与原生sort的测试
今天工作室断网!果断回宿舍,不然各种资料都没有.(他说将来会找到!)不好意思,又哼起来了.进入主题,大家都知道,快排是各种排序算法中,最高效的也是应用最广的,还有更重要的一点,面试特别爱考的! 其实大 ...
- 阮一峰大神的快排?刚才还在纠结sort()的我!真是个小傻瓜
看到这个标题之后 我毫不犹豫的点进去了 趁现在不忙我赶紧把代码写到了我的小本本上好好研究研究 (写的就不放进来了 有点丑) 研究了下 第一反应 明明能用sort()解决的 为什么非要写这么一大串 但 ...
- 待字闺中之快排单向链表;leetcode之Sort List
题目来源.待字闺中.原创@陈利人 .欢迎大家继续关注微信公众账号"待字闺中" 分析:思路和数据的高速排序一样,都须要找到一个pivot元素.或者节点. 然后将数组或者单向链表划分为 ...
- hdu 1425:sort(排序,经典题。快排模板)
sort Time Limit : 6000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submissi ...
随机推荐
- form表单reset重置按钮
如果ajax提交完数据,后想清空表单内容 ,以前都是用这个方法$("#id").val(""); 一个一个清空的,其实可以在form表单中加个隐藏的<in ...
- 【hibernate】之标注枚举类型@Enumerated(转载)
实体Entity中通过@Enumerated标注枚举类型,例如将CustomerEO实体中增加一个CustomerType类型的枚举型属性,标注实体后的代码如下所示. @Entity @Table(n ...
- Android 启动模拟器是出现“Failed to allocate memory: 8”错误提示的原因及解决办法
某天,Android 启动模拟器是出现“Failed to allocate memory: 8”错误,模拟器无法启动,如下图: 原因:设置了不正确AVD显示屏模式,4.0版默认的模式为WVGA800 ...
- SQL Server 2012 批量重建索引
关于索引的概念可以看看宋大牛的博客 T-SQL查询高级—SQL Server索引中的碎片和填充因子 整个数据库的索引很多,索引碎片多了,不可能一个个的去重建,都是重复性的工作,所以索性写了个存储过程, ...
- 想当然是编程最大的坑,记更新删除过期cookie无效有感
一般来说只要设置了cookie的过期时间,就可以实现删除cookie的作用. 可是我尝试了设置过期时间,清除cookie内容都无效. 最后才发现,我根本没有执行到那段设置过期的代码. 刚开始是因为登出 ...
- ThreadPoolExecutor使用介绍
private static ExecutorService exec = new ThreadPoolExecutor(8, 8, 0L,TimeUnit.MILLISECONDS, new Lin ...
- OAF_EO系列1 - Definition定义(概念)
2014-06-14 Created By BaoXinjian
- hdu 1361 Parencodings 简单模拟
Parencodings 题意: 由括号序列S可经P规则和W规则变形为P序列和W序列. p规则是:pi是第i个右括号左边的左括号的数: w规则是:wi是第i右括号与它匹配的左括号之间右括号的数(其中包 ...
- C#中调用Windows API的要点 .
介绍 API(Application Programming Interface),我想大家不会陌生,它是我们Windows编程的常客,虽然基于.Net平台的C#有了强大的类库,但是,我们还是不能否认 ...
- mac下Android开发环境搭建
之前一段时间在学习ios的开发,近一段时间想着也接触下Android开发,以来加深对移动端开发的理解.这里根据自己配置Android开发环境的过程,比较详细的来总结下自己的安装过程,希望对一些正准备配 ...