快速排序
来源:互联网 发布:2k18詹姆斯身体数据 编辑:程序博客网 时间:2024/06/06 16:47
package sort;public class myQuickSort {public static void main(String[] args) {int array[] = { 5, 3, 8, 6, 13, 24, 9, 5, 21, 17, 3, 16, -3 };quickSort(array, 0, array.length - 1);ArrayUtils.printArray(array);}public static int getmiddle(int[] array, int left, int right) {int temp = array[left];while (left < right) {while (left < right && array[right] >= temp)right--;System.out.println("从右到左结束,此时right=" + right + " ," + array[right]+ "小于temp:" + temp + ",或者left=right了,将第" + (left + 1)+ "个元素" + array[left] + "赋值为" + array[right]);array[left] = array[right];ArrayUtils.printArray(array);while (left < right && array[left] <= temp)left++;System.out.println("从左到右结束,此时left=" + left + " ," + array[left]+ "大于temp:" + temp + ",或者left=right了,将第" + (right + 1)+ "个元素" + array[right] + "赋值为" + array[left]);array[right] = array[left];ArrayUtils.printArray(array);}System.out.println("将第" + (left + 1) + "个元素" + array[left] + "赋值为temp"+ temp);array[left] = temp;ArrayUtils.printArray(array);return left;}// 为getmiddle的纯净版,无中间输出结果public static int getmiddle1(int[] array, int left, int right) {int temp = array[left];while (left < right) {while (left < right && array[right] >= temp)right--;array[left] = array[right];while (left < right && array[left] <= temp)left++;array[right] = array[left];}array[left] = temp;return left;}public static void quickSort(int[] array, int left, int right) {if (array.length <= 1)return;if (left < right) {int mid = getmiddle(array, left, right);quickSort(array, left, mid - 1);quickSort(array, mid + 1, right);}}}
带中间详细输出的结果如下:
从右到左结束,此时right=12 ,-3小于temp:5,或者left=right了,将第1个元素5赋值为-3{-3, 3, 8, 6, 13, 24, 9, 5, 21, 17, 3, 16, -3}从左到右结束,此时left=2 ,8大于temp:5,或者left=right了,将第13个元素-3赋值为8{-3, 3, 8, 6, 13, 24, 9, 5, 21, 17, 3, 16, 8}从右到左结束,此时right=10 ,3小于temp:5,或者left=right了,将第3个元素8赋值为3{-3, 3, 3, 6, 13, 24, 9, 5, 21, 17, 3, 16, 8}从左到右结束,此时left=3 ,6大于temp:5,或者left=right了,将第11个元素3赋值为6{-3, 3, 3, 6, 13, 24, 9, 5, 21, 17, 6, 16, 8}从右到左结束,此时right=3 ,6小于temp:5,或者left=right了,将第4个元素6赋值为6{-3, 3, 3, 6, 13, 24, 9, 5, 21, 17, 6, 16, 8}从左到右结束,此时left=3 ,6大于temp:5,或者left=right了,将第4个元素6赋值为6{-3, 3, 3, 6, 13, 24, 9, 5, 21, 17, 6, 16, 8}将第4个元素6赋值为temp5{-3, 3, 3, 5, 13, 24, 9, 5, 21, 17, 6, 16, 8}从右到左结束,此时right=0 ,-3小于temp:-3,或者left=right了,将第1个元素-3赋值为-3{-3, 3, 3, 5, 13, 24, 9, 5, 21, 17, 6, 16, 8}从左到右结束,此时left=0 ,-3大于temp:-3,或者left=right了,将第1个元素-3赋值为-3{-3, 3, 3, 5, 13, 24, 9, 5, 21, 17, 6, 16, 8}将第1个元素-3赋值为temp-3{-3, 3, 3, 5, 13, 24, 9, 5, 21, 17, 6, 16, 8}从右到左结束,此时right=1 ,3小于temp:3,或者left=right了,将第2个元素3赋值为3{-3, 3, 3, 5, 13, 24, 9, 5, 21, 17, 6, 16, 8}从左到右结束,此时left=1 ,3大于temp:3,或者left=right了,将第2个元素3赋值为3{-3, 3, 3, 5, 13, 24, 9, 5, 21, 17, 6, 16, 8}将第2个元素3赋值为temp3{-3, 3, 3, 5, 13, 24, 9, 5, 21, 17, 6, 16, 8}从右到左结束,此时right=12 ,8小于temp:13,或者left=right了,将第5个元素13赋值为8{-3, 3, 3, 5, 8, 24, 9, 5, 21, 17, 6, 16, 8}从左到右结束,此时left=5 ,24大于temp:13,或者left=right了,将第13个元素8赋值为24{-3, 3, 3, 5, 8, 24, 9, 5, 21, 17, 6, 16, 24}从右到左结束,此时right=10 ,6小于temp:13,或者left=right了,将第6个元素24赋值为6{-3, 3, 3, 5, 8, 6, 9, 5, 21, 17, 6, 16, 24}从左到右结束,此时left=8 ,21大于temp:13,或者left=right了,将第11个元素6赋值为21{-3, 3, 3, 5, 8, 6, 9, 5, 21, 17, 21, 16, 24}从右到左结束,此时right=8 ,21小于temp:13,或者left=right了,将第9个元素21赋值为21{-3, 3, 3, 5, 8, 6, 9, 5, 21, 17, 21, 16, 24}从左到右结束,此时left=8 ,21大于temp:13,或者left=right了,将第9个元素21赋值为21{-3, 3, 3, 5, 8, 6, 9, 5, 21, 17, 21, 16, 24}将第9个元素21赋值为temp13{-3, 3, 3, 5, 8, 6, 9, 5, 13, 17, 21, 16, 24}从右到左结束,此时right=7 ,5小于temp:8,或者left=right了,将第5个元素8赋值为5{-3, 3, 3, 5, 5, 6, 9, 5, 13, 17, 21, 16, 24}从左到右结束,此时left=6 ,9大于temp:8,或者left=right了,将第8个元素5赋值为9{-3, 3, 3, 5, 5, 6, 9, 9, 13, 17, 21, 16, 24}从右到左结束,此时right=6 ,9小于temp:8,或者left=right了,将第7个元素9赋值为9{-3, 3, 3, 5, 5, 6, 9, 9, 13, 17, 21, 16, 24}从左到右结束,此时left=6 ,9大于temp:8,或者left=right了,将第7个元素9赋值为9{-3, 3, 3, 5, 5, 6, 9, 9, 13, 17, 21, 16, 24}将第7个元素9赋值为temp8{-3, 3, 3, 5, 5, 6, 8, 9, 13, 17, 21, 16, 24}从右到左结束,此时right=4 ,5小于temp:5,或者left=right了,将第5个元素5赋值为5{-3, 3, 3, 5, 5, 6, 8, 9, 13, 17, 21, 16, 24}从左到右结束,此时left=4 ,5大于temp:5,或者left=right了,将第5个元素5赋值为5{-3, 3, 3, 5, 5, 6, 8, 9, 13, 17, 21, 16, 24}将第5个元素5赋值为temp5{-3, 3, 3, 5, 5, 6, 8, 9, 13, 17, 21, 16, 24}从右到左结束,此时right=11 ,16小于temp:17,或者left=right了,将第10个元素17赋值为16{-3, 3, 3, 5, 5, 6, 8, 9, 13, 16, 21, 16, 24}从左到右结束,此时left=10 ,21大于temp:17,或者left=right了,将第12个元素16赋值为21{-3, 3, 3, 5, 5, 6, 8, 9, 13, 16, 21, 21, 24}从右到左结束,此时right=10 ,21小于temp:17,或者left=right了,将第11个元素21赋值为21{-3, 3, 3, 5, 5, 6, 8, 9, 13, 16, 21, 21, 24}从左到右结束,此时left=10 ,21大于temp:17,或者left=right了,将第11个元素21赋值为21{-3, 3, 3, 5, 5, 6, 8, 9, 13, 16, 21, 21, 24}将第11个元素21赋值为temp17{-3, 3, 3, 5, 5, 6, 8, 9, 13, 16, 17, 21, 24}从右到左结束,此时right=11 ,21小于temp:21,或者left=right了,将第12个元素21赋值为21{-3, 3, 3, 5, 5, 6, 8, 9, 13, 16, 17, 21, 24}从左到右结束,此时left=11 ,21大于temp:21,或者left=right了,将第12个元素21赋值为21{-3, 3, 3, 5, 5, 6, 8, 9, 13, 16, 17, 21, 24}将第12个元素21赋值为temp21{-3, 3, 3, 5, 5, 6, 8, 9, 13, 16, 17, 21, 24}{-3, 3, 3, 5, 5, 6, 8, 9, 13, 16, 17, 21, 24}
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- iOS之UIScrollview添加约束图文详解
- Address already in use: JVM_Bind<null>:8080解决办法(端口占用查看,关闭服务)
- Leetcode 50. Pow(x, n) (Medium) (cpp)
- c++string类
- js实现瀑布流布局
- 快速排序
- Flask Web 开发 Flask script 扩展功能 Manager
- Scala学习第十二弹 数组
- iOS:KVO的简单使用及其本质
- 区块链开发(二)部署和运行第一个以太坊智能合约
- Java(a)--Java基础程序设计
- Maven基础与私服搭建
- JavaScript DOM 编程艺术 第八章 例子分析
- 指针学习笔记2