這篇文章將為大家詳細講解有關(guān)如何使用java實現(xiàn)快速排序,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
普洱ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
1) 快速排序算法介紹
快速排序(quicksort)是對冒泡排序的一種改進?;舅枷胧?通過一躺排序?qū)⒁判虻臄?shù)據(jù)分割成獨立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按照此方法對這兩部分數(shù)據(jù)分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數(shù)據(jù)變成有序序列。
2) 快速排序法示意圖:
3) 快速排序算法應(yīng)用實列:
要求: 對[-9,78,0,23,-567,70] 進行從小到大的排序,要求使用快速排序法。
a. 如果取消左右遞歸,結(jié)果是 -9 -567 0 23 78 70
b. 如果取消左右遞歸,結(jié)果是 -567 -9 0 23 78 70
c. 如果取消左遞歸,結(jié)果是 -9 -567 0 23 70 78
d. 代碼實現(xiàn)
import java.util.Arrays; //快速排序 public class QuickSort { public static void main(String[] args) { int[] arr= {-9,78,0,23,-567,70, -1,900, 4561}; System.out.println("排序前"); System.out.println(Arrays.toString(arr)); QuickSort.quickSort(arr, 0, arr.length-1); System.out.println("排序后"); System.out.println(Arrays.toString(arr)); } public static void quickSort(int[] arr,int left,int right) { int l = left;//左下標 int r = right;//右下標 //中軸值,中間值 int pivot = arr[(left+right)/2]; int temp = 0;//中間值,作為交換時使用 /*while循環(huán)的目的是讓比pivot值小放到左邊,比pivot值大放到右邊 */ while(l < r) { //在pivot的左邊一直找,找到大于等于pivot值,才退出 while(arr[l]pivot) { r-=1; } /* * 如果l>=r說明pivot的左右兩的值,已經(jīng)按照左邊全部是小于等于pivot值,右邊全部是大于等于pivot */ if(l>=r) { break; } //交換 temp=arr[l]; arr[l]=arr[r]; arr[r]=temp; //如果交換完后,發(fā)現(xiàn)這個arr[l]==pivot值 相等r--,前移 if(arr[l]==pivot) { r-=1; } //如果交換完后,發(fā)現(xiàn)這個arr[r]==pivot值 相等l++,后移 if(arr[l]==pivot) { l+=1; } } //如果l==r,必須l++,r--,否則會出現(xiàn)棧溢出 if(l==r) { l+=1; r-=1; } //向左遞歸 if(left l) { quickSort(arr, l, right); } } }
關(guān)于“如何使用java實現(xiàn)快速排序”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。