Java快速排序QuickSort(實例)
快速排序
----------------------------------------------------------------------
思想

如上圖:每趟快速排序開始時,設置一個key,key=array[low],然后由high向左,找到小于key的值,復制到low位置,然后再由low向右找到大于key的值,復制到high位置,直到low=high結束,
將key的復制到low位置。
上圖中第一輪劃分后找到32的位置,然后遞歸的對32左邊和右邊的進行排序。
代碼:
package Sort;
import java.util.Arrays;
public class QuickSort {
public static void main(String[] args) {
int array[]={32, 12, 7, 78, 23, 45};
quickSort(array,0,array.length-1);
System.out.println(Arrays.toString(array));
}
public static void quickSort(int array[],int left,int right)
{
if(left>=right)
{
return ;
}
int i=left;
int j=right;
int key=array[left];
while(i<j)
{
while(i<j&&array[j]>key)
{
j--;
}
array[i]=array[j];
//從后往前找到第一個比key小的數與array[i]交換;
while(i<j&&array[i]<key)
{
i++;
}
array[j]=array[i];
//從前往后找到第一個比key大的數與array[j]交換;
}
array[i]=key;
//一趟快排之后已經將key的位置找到。
quickSort(array,left,i-1);
//對key左邊的進行排序
quickSort(array,i+1,right);
//對key右邊的進行排序
}
}
以上這篇Java快速排序QuickSort(實例)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
詳解Java并發(fā)編程中的優(yōu)先級隊列PriorityBlockingQueue
PriorityBlockingQueue是Java中實現了堆數據結構的線程安全的有界阻塞隊列。本文將會深入解讀PriorityBlockingQueue的源碼實現,感興趣的可以了解一下2023-05-05
java String類常量池分析及"equals"和"==”區(qū)別詳細介紹
這篇文章主要介紹了java String類常量池分析及"equals"和"==”區(qū)別詳細介紹的相關資料,需要的朋友可以參考下2016-12-12
出現java.lang.NoSuchMethodException異常的解決(靠譜)
這篇文章主要介紹了出現java.lang.NoSuchMethodException異常的解決方案(靠譜),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
java的SimpleDateFormat線程不安全的幾種解決方案
但我們知道SimpleDateFormat是線程不安全的,處理時要特別小心,要加鎖或者不能定義為static,要在方法內new出對象,再進行格式化,本文就介紹了幾種方法,感興趣的可以了解一下2021-08-08

