-
快速排序原理
-
快速排序实现
-
快排口诀
吾有一术,名曰快排。入组出组,小大也入。
首小尾大,组小为枢。恒为尾重,首轻之是。
组尾大枢,恒尾减云。若组之尾,小于枢者。
组中取尾,名之曰临。组尾首换,组首临也。
组首小枢,恒首增云。若组之首,大于枢者。
组中取首,名之曰临。组首尾换,组尾临也。
如上云云,如下递归。头重左递,小头减入。
脚重右递,大尾加入。新组正序,乃得而返。
-
快排口诀解意
-
完整Java代码
public class Demo { // 吾有一术,名曰快排。入组出组,小大也入。 public static int[] quickSort(int[] arr ,int low ,int high){ int start = low; int end = high; int key = arr[low]; while(end > start){ while(end > start && arr[end] >= key){ end--; } if(arr[end] <= key){ int temp = arr[end]; arr[end] = arr[start]; arr[start] = temp; } while(end > start && arr[start] <= key){ start++; } if(arr[start] >= key){ int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; } //下面进行递归调用 } if(start > low){ quickSort(arr, low, start-1); } if(end < high){ quickSort(arr, end+1, high); } return arr; } public static void main(String[] args) { int[] oldArr = new int[]{1,3,4,2,7,0}; for (int i = 0; i < oldArr.length; i++) { System.out.println("oldArr = " + "["+i+"] "+ oldArr[i]); } int[] newArr = Demo.quickSort(oldArr, 0, oldArr.length-1); for (int i = 0; i < newArr.length; i++) { System.out.println("newArr = " + "["+i+"] "+ newArr[i]); } } }
-
-
课后作业
背诵并默写如下口诀(34句,136个字)。
枢值分堆,递归再分。
吾有一术,名曰快排。入组出组,小大也入。
首小尾大,组小为枢。恒为尾重,首轻之是。
组尾大枢,恒尾减云。若组之尾,小于枢者。
组中取尾,名之曰临。组尾首换,组首临也。
组首小枢,恒首增云。若组之首,大于枢者。
组中取首,名之曰临。组首尾换,组尾临也。
如上云云,如下递归。头重左递,小头减入。
脚重右递,大尾加入。新组正序,乃得而返。
22 排序算法下(快速排序算法):枢值分堆,递归再分
最新推荐文章于 2024-07-25 06:53:26 发布