1、這里引用一下趙堅、姜梅主編的《數據結構(C語言版)》中的快速排序原理和過程。
2、代碼實現
package baohuajie.sort;
import java.util.Arrays;
public class QuickSort {
public static void quickSort(int[] array, int left, int right) {
int i = left;
int j = right;
int temp = 0;
int time=0;
if (left < right) {
temp = array[left];
while (i != j) {
while (j > i && array[j] >= temp) {
j--;
}
if (j > i) {
array[i] = array[j];
i++;
}
while (j > i && array[i] <= temp) {
i++;
}
if (j > i) {
array[j] = array[i];
j--;
}
}
array[i] = temp;
System.out.println("第"+time+"次排序結果:" + Arrays.toString(array));
time++;
quickSort(array, left, i - 1);
quickSort(array, i + 1, right);
}
}
public static void main(String[] args) {
// int[] array = { 52, 38, 47, 24, 69, 05, 17, 38 };
int[] array = { 24, 3, 52, 38};
quickSort(array, 0, array.length - 1);
System.out.println("最終排序結果:" + Arrays.toString(array));
}
}
遞歸函數結束的條件:遞歸函數一定有一條分支不調用自身
【上一篇】常用排序算法之冒泡排序
【下一篇】常用排序算法之歸並排序
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。