您好,登錄后才能下訂單哦!
本篇內容介紹了“Java快速排序方法怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
快速排序使用了分治的思想,通過一輪的排序,可以將序列分割成獨立的兩個部分,其中一部分的值均比基準值小,另一部分的值均比基準值大。而后針對兩部分序列再分別按照同樣的算法進行排序,直到序列整體有序。
以如下序列arr為例進行升序排序,說明快速排序的基本算法
第一個位置的值23作為基準值base,從右邊開始比較,如果arr[high]>base,high前移。
arr[high]<base,arr[low]=arr[high],然后low后移
Arr[low]<base,不交換,low后移
Arr[low]>base,arr[high]=arr[low],high前移
Arr[high]<base,arr[low]=base,low后移,
low和high指向同一個位置,
將基準數據賦值給low和high指向的同一位置,本輪比較結束。然后,再對23前的數據和23后面的數據,分別再按照上述算法進行比較排序,依次類推,直到所有元素有序。
由于對各個子序列都要進行相同算法的排序,可以采用遞歸思想實現快速排序
package com.qfedu.vo;
public class QuickSort {
public static void quickSort(int[] arr,int low,int high){
int i,j,temp,t;
if(low>high){
return;
}
i=low;
j=high;
//temp存儲基準數
temp = arr[low];
while (i<j) {
//先從右邊開發判斷,條件成立,high向左遞減
while (temp<=arr[j]&&i<j) {
j--;
}
arr[i]=arr[j];
//再從左邊開始,low依次向右遞增
while (temp>=arr[i]&&i<j) {
i++;
}
arr[j]=arr[i];
arr[i]=temp;
}
//遞歸調用左邊內容進行排序
quickSort(arr, low, j-1);
//遞歸調用右邊內容進行排序
quickSort(arr, j+1, high);
}
public static void main(String[] args){
int[] arr = {15,23,7,87,34,56};
quickSort(arr, 0, arr.length-1);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
“Java快速排序方法怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。