专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

什么是快速排序?速度快效率也很高,太给力了

来源:小易整编  作者:小易  发布时间:2020-03-23 02:18
摘要:前两天我们介绍了冒泡排序和选择排序 ,今天介绍一个相比前两种排序效率 更高 的排序方式, 快速排序 ,如果没有看过前面两篇文章,读者可以翻阅小编以前的文章, 下面开始介绍 快速排序 。 它的基本思想是 :每次排序将要排序的数据分割成独立的两部分,其中一部分的...

快速排序,速度快效率高,是最优秀的一种排序算法

前两天我们介绍了冒泡排序和选择排序,今天介绍一个相比前两种排序效率更高的排序方式,快速排序,如果没有看过前面两篇文章,读者可以翻阅小编以前的文章,下面开始介绍快速排序

它的基本思想是:每次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再对这两部分进行排序,多次循环,最终排序成功。

举例说明:假如有一个数组int arr={56,2,44,1,98,55,3,555,4},初始i=0,j=8,基准值=arr[0],取第一数56为基准值。我们形象点理解就是把基准值拿出来,那么0哪个位置为空,{空,2,44,1,98,55,3,555,4}。




快速排序,速度快效率高,是最优秀的一种排序算法

第一轮:从j=8开始看找小于56的数,j=8时为4就符合,那么这是把4拿出来放到空的地方,那么4这个地方就为空了,{4,2,44,1,98,55,3,555,空},后面找到之后i=0是坑了,所以应该把i向右移一位,此时i=1,j=8,然后从左找大于56的,我们可以发现98符合,和刚才一样,把98拿出来变成空,把98放到原来空的地方。{4,2,44,1,空,55,3,555,98},j要像左移一位,此时i=4,j=7第一轮完成。

第二轮:从j=7像左查找小于56的,我们发现3符合,此时数组为{4,2,44,1,3,55,空,555,98}i=5,j=6,从i=5像右找大于56,发现在i<j没有符合的,此时数组为{4,2,44,1,3,55,空,555,98},i=6,j=6,此时i=j,就表示排序结束,此时,把56放在空的位置{4,2,44,1,3,55,56,555,98},左右分为{4,2,44,1,3,55}{555,98},分别按照上面方式排序,最终让数组只剩下一个元素为止。




快速排序,速度快效率高,是最优秀的一种排序算法

下面给出代码的图片形式和文本形式,方便浏览和复制

public class Kuai {

public static void main(String args[]){

int [] arr={56,2,44,1,98,55,3,555,4};//定义一个数组

fangfa(arr,0,arr.length-1);//调用快速排序方法

for(int a:arr){//遍历结果

System.out.print(a+",");

}

}

public static void fangfa(int [] arr,int i,int j){//数组,区域的最小指针和最大指针

if(i<j){//i<j全文都在判断只要他不符合就是说明已经排序成功了

int tou=i;

int wei=j;//i和j老变化,记住他们,tou和wei

int x=arr[tou]; //永远把最前面的那个数记为x

while(i<j){//只要i<j,就来来回回的判断

while(arr[j]>x&&i<j){//从后来只要>x,就说明符合快速排序,后面的值为最大的

j--;//把后面的索引来来回回的--

}

if(i<j){//如果while运行完毕,说明在后面遇到了比x小的值,此时把这个值放入坑

arr[i]=arr[j];//此时j这个位置变成坑,把i向右移一位

i++;

}

while(arr[i]<x&&i<j){

i++;

}

if(i<j){

arr[j]=arr[i];

j--;

}//while运行结束表示第一轮完成,i==j或者i>j了,此时应该一分为二,并把x放入最后一个坑x

}//这样坑就被填平了,此时再次调用方法,一份为二,调用第二轮,以此类推直到,每一轮只剩下

arr[i]=x; //一个元素为止就成功了

fangfa(arr,tou,i-1);//再次调用用递归

fangfa(arr,j+1,wei);

}

}

}

快速排序,速度快效率高,是最优秀的一种排序算法

学习算法,编程本身就是枯燥的,但是你能够坚持下来,你就成功了,那么你准备好了吗?如果喜欢就请点个赞吧


本文地址:百科知识频道 https://www.hkm168.com/zhibai/110775.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


百科知识
小编:小易整编
相关文章相关阅读
  • “水”字旁常用字,快速记忆方法(提高汉字识别能力)

    “水”字旁常用字,快速记忆方法(提高汉字识别能力)

    “水”字旁常用字,快速记忆方法(提高汉字识别能力)汉字是中国文化的重要组成部分,对于中文学习者而言,汉字的认识和记忆是非常重要的。其中“水”字是汉字中的一个旁常用字。在学习这个字时,我们可以采用一些快速记忆方法,提高汉字识别能力。首先,我们...

  • 蒙牛创始人退出蒙牛(蒙牛创始人是谁人)

    蒙牛创始人退出蒙牛(蒙牛创始人是谁人)

    知道小编2023-05-01财经11本篇文章给大家谈谈蒙牛创始人退出蒙牛,以及蒙牛创始人是谁人对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。牛根生为什么要退出蒙牛?牛根生退出蒙牛如下:根据公告,是因为退休和投入...

  • 奖金单独计税还是并入综合所得(奖金单独计税还是并入综合所得怎么操作)

    奖金单独计税还是并入综合所得(奖金单独计税还是并入综合所得怎么操作)

    一条龙2023-05-01财经4今天给各位分享奖金单独计税还是并入综合所得的知识,其中也会对奖金单独计税还是并入综合所得怎么操作进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!个人所得税奖金单独计...

  • 节能灯加盟(太阳能路灯厂家联系电话)

    节能灯加盟(太阳能路灯厂家联系电话)

    你好马冬梅2023-05-01品牌4今天给各位分享节能灯加盟的知识,其中也会对太阳能路灯厂家联系电话进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!节能灯加盟生产怎么样,给设备,包销售是真的吗。同...

  • 诚心堂(诚心堂帖是谁写的)

    诚心堂(诚心堂帖是谁写的)

    喜得利2023-05-01品牌3本篇文章给大家谈谈诚心堂,以及诚心堂帖是谁写的对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。澄心堂的解释澄心堂的解释南唐烈祖李昪所居室名。宋陈师道《后山谈丛》卷二:“澄心堂本篇...

  • 暗黑3地狱火护符(暗黑3地狱火护符有什么用)

    暗黑3地狱火护符(暗黑3地狱火护符有什么用)

    臻品享受2023-05-01游戏3今天给各位分享暗黑3地狱火护符的知识,其中也会对暗黑3地狱火护符有什么用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!switch暗黑3地狱火护符作用1、地狱火...

  • 想看比赛为何这么难(为什么一到比赛就很差)

    想看比赛为何这么难(为什么一到比赛就很差)

    一条龙2023-05-01体育3今天给各位分享想看比赛为何这么难的知识,其中也会对为什么一到比赛就很差进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!我喜欢足球,可是为什么看足球比赛时候,却不能?...

  • 过五关斩六将(过五关斩六将的意思是)

    过五关斩六将(过五关斩六将的意思是)

    夏洛的人生2023-05-01财经4今天给各位分享过五关斩六将的知识,其中也会对过五关斩六将的意思是进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!关羽过五关斩六将中的六将有哪些人?洛阳太守韩福和...

  • 周排行
  • 月排行
  • 年排行

精彩推荐