在此示例中,我們將學(xué)習(xí)在Java中實(shí)現(xiàn)快速排序算法。
在學(xué)習(xí)Java中的快速排序算法之前,請(qǐng)確保您了解快速排序算法的工作原理。
//用Java快速排序 import java.util.Arrays; class Main { //根據(jù)數(shù)據(jù)軸劃分?jǐn)?shù)組 int partition(int array[], int low, int high) { //選擇最后一個(gè)元素作為軸 int pivot = array[high]; //初始化第二個(gè)指針 int i = (low - 1); //把小于軸的元素放在左邊 //大于樞軸右側(cè)的樞軸 for (int j = low; j < high; j++) { //將所有元素與pivot進(jìn)行比較 //交換大于pivot的元素 //元素小于pivot //按降序排序 // if (array[j] >= pivot) if (array[j] <= pivot) { //第二個(gè)指針遞增。 //將較小的元素替換為較大的元素 i++; int temp = array[i]; array[i] = array[j]; array[j] = temp; } } //所以左邊的元素更小 //右邊的元素大于pivot int temp = array[i + 1]; array[i + 1] = array[high]; array[high] = temp; return (i + 1); } void quickSort(int array[], int low, int high) { if (low < high) { //選擇軸位置并將所有元素放小 //左軸大于軸,右軸大于軸 int pi = partition(array, low, high); //對(duì)軸左側(cè)的元素進(jìn)行排序 quickSort(array, low, pi - 1); //對(duì)軸右側(cè)的元素進(jìn)行排序 quickSort(array, pi + 1, high); } } public static void main(String args[]) { //創(chuàng)建一個(gè)未排序的數(shù)組 int[] data = { 8, 7, 2, 1, 0, 9, 6 }; int size = data.length; //創(chuàng)建Main類的對(duì)象 Main qs = new Main(); //將第一個(gè)和最后一個(gè)索引傳遞給數(shù)組 qs.quickSort(data, 0, size - 1); System.out.println("排序數(shù)組: "); System.out.println(Arrays.toString(data)); } }
輸出1
未排序的數(shù)組: [8, 7, 2, 1, 0, 9, 6] 排序數(shù)組: [0, 1, 2, 6, 7, 8, 9]
在這里,數(shù)組的元素按升序排序。 如果我們想要按降序?qū)υ剡M(jìn)行排序,那么在Partition()方法的for循環(huán)中,我們可以將代碼更改為:
//小于符號(hào)更改為大于 if (array[j] >= pivot) {