J**a实现快速排序算法(Quicktsort)

时间:2016.04.27 发布人:lcwa76779

J**a实现快速排序算法(Quicktsort)

已解决问题

谷歌lcwa76779用户在2016.04.27提交了关于“蜡笔小新J**a实现快速排序算法(Quicktsort)”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-27T21:26:53。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,你无异于雪中送炭,让我感激涕零 !

希望以下的回答,能够帮助你。

第1个回答

用户名:dfhger8347  

这篇文章主要介绍了J**a实现快速排序算法(Quicktsor问答t),有需要的朋友可以参考一下

快速排序算法介绍快速排序和归并排序都使用分复却胜治法来设计算法,区别在于归并排序把数组分为两个基本等长的子数组,分别排好序之后还要进行归并(Merge)晶多燃随同家卷心势读选操作,而快速排序拆分子数组的时候显得更有艺术,取一个基准元素,拆分之后基准元素左边的元素都比基准元素小,右边的元素都不小于基准元素,这样只员怕目需要分别对两个子数组排序即可,不再像归并排序一样需要归并操作。基准元素坚始功米谓个命血切空土的选取对算法的效率影响很大,最好的情况是两个子数组大小基本相当。为简单起见,我们选择最后一块往困则说流达间联也个元素,更高级的做法可以先找一个中位数并把中位数与最后一个元素交换,之后再进行相同的操作步骤。拆分是快速排序的核心。快速排序的最坏运行时间是O(n2),但期望的运行时间是O(nlgn)。快速排序算法J**a实现1.把数组拆分为两个子数组加上一个基准元素:选取最后一个元素作为基准元素,index变量记录最近一个小于基准元素的元素所在的位置,初始化为start-1,发现新的小于基准元素的元素,index加1。从第一个元素到父远速哥奏超毫亲存象积倒数第二个元素,依六换常操次与基准元素比较,扬热合异格示哥小于基准元素,index加1,交换位置index和当前位置的元素。循环结束之后index+1得到基准元素应该在的位置,交换index+1和最后一个元素。2.分别排序[start,index],和[index+2,end]两个子数组刑此简局城顺如《插入排序(Insertsort)之J**a实现》一样,先实现一个数组工具类。太裂你盟抓师的序题行代码如下:代码如下:pub节方许青回赶按色评转licclassArrayUtils{publicstaticvoidprintArray(int[]array){System.out.print("{");for(inti=0;i<arr打良投婷ay.length;i++){System.out.print(ar项每也取配织跳误集ray[i]);if(i<array.length-1){System.out.print(",");}}System.out.println("}");}publicstaticvoidexchange角背审费笑项乱宗温Elements(int[]array,intindex1,intindex2){inttemp=array[index1];array[index1]=array[index2];a轻跳愿蒸京升结缩rray[index2]=temp;}}快速排序的J过**a实现以及测试代码如下:代码如下:publicclassQuickSort{publicstaticvoidmain(String[]args){int[]array={9,8,7,6,5,4,3,2,1,0,-1,-2,-3};System.out.println("Beforesort:");ArrayUtils.printArray(arr器续突行球张曾ay);quickSort(array);System.out.println("Afters章红式扩力贵陈拉ort:");ArrayUtils.printArray(array);}publicstaticvoidquickSort(int[]array){subQuickSort(array,0,array.length-1);}privatestaticvoidsubQuickSort(int[]array,intstart,intend){if(array==**ll||(end-start+1)<2){return;}intpart=partition(array,start,end);if(part==start){subQuickSort(array,part+1,end);}elseif(part==end){subQuickSort(array,start,part-1);}else{subQuickSort(array,start,part-1);subQuickSort(array,part+1,end);}}privatestaticintpartition(int[]array,intstart,intend){intvalue=array[end];intindex=start-1;for(inti=start;i<end;i++){if(array[i]<value){index++;if(index!=i){ArrayUtils.exchangeElements(array,index,i);}}}if((index+1)!=end){ArrayUtils.exchangeElements(array,index+1,end);}returnindex+1;}}