当前位置: 首页 > 后端技术 > Java

快速排序(QuickSort)

时间:2023-04-01 19:52:23 Java

快速排序是对冒泡排序的改进。其基本思想是:通过一次排序将待排序的数据分成两个独立的部分,其中一部分的所有数据都小于另一部分的所有数据,然后对这两部分进行快速处理。数据按照这种方法排序,整个排序过程可以递归进行,这样整个数据就变成了一个有序的序列。导入java.util.Arrays;publicclassQuickSort{/***快速排序算法*@paramaarray*/publicstaticvoidsort(int[]a){intlo=0;//左指针起始位置inthi=a.length-1;//右指针起始位置sort(a,lo,hi);}publicstaticvoidsort(int[]a,intlo,inthi){if(lo>=hi){//安全验证,即递归退出返回;}//前序遍历intpartition=partition(a,lo,hi);//排序并返回边界值交换后的索引//先排序,再拆分!即前序遍历sort(a,lo,partition-1);排序(a,分区+1,高);}privatestaticintpartition(int[]a,intlo,inthi){//确定边界值intkey=a[lo];//定义两个指针,分别指向边界值的索引和最大索引的下一位intleft=lo;int右=hi+1;//分词while(true){//先右while(a[--right]>key){//查找右key,循环条件为相反if(left==hi){break;//越界,跳出while}}if(left>=right){//指针重叠,跳出最外层循环break;}else{//指针还没有重叠,交换左右指针elementswap(a,left,right);}}交换(a,lo,右);//最后交换边界值和重叠处的元素返回权;//返回边界值交换后的索引}publicstaticvoidswap(int[]a,intlo,inthi){intk=a[lo];a[lo]=a[hi];[hi]=k;}publicstaticvoidmain(String[]args){int[]a={6,1,2,7,9,3,4,5,8};排序(一);System.out.println(Arrays.toString(a));}}参考https://blog.csdn.net/Swoffor...