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

访客3年前黑客工具631

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

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

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

举例说明:假如有一个数组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




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

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

 

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

int tou=i;

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

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

while(i

while(arr[j]>x&&ix,就说明符合快速排序,后面的值为更大的

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

}

if(i

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

i++;

}

while(arr[i]

i++;

}

if(i

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);

}

}

}

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

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

 

相关文章

车载大u盘什么牌子好速度快(十大u盘品牌排行榜

车载大u盘什么牌子好速度快(十大u盘品牌排行榜

大数据时代,人们越来越离不开移动存储,U盘是最简单实用的移动存储方式。U盘小巧精致的外观、简单易用的操作以及可移动性强的特性都是人们离不开U盘的原因。现在人们对U盘的功能要求越来越细分,所以市场上出现...

什么电脑浏览器好用稳定速度快(最好用的4款浏览器推荐)

什么电脑浏览器好用稳定速度快(最好用的4款浏览器推荐)

哪个欣赏器此刻易于利用? 最近,每小我私家都在问哪个欣赏器速度更快,内存更少? 如今,最常用的网民是欣赏器。一个好的欣赏器可以辅佐我们提高事情速度。 本日,来推荐一下2018年易于利用的欣赏器推荐。...