JAVA排序之快速排序法(源自张孝祥面试题)
来源:互联网 发布:js search汉字 编辑:程序博客网 时间:2024/05/16 09:04
/** * 快速排序法 * @author Shoper */public class QuickSortTest { public static void main(String[] args) { Integer[] array = new Integer[] { 12, 44, 12, 13, 14, 0, 67, 12, 53 }; System.out.println("原始数据"); for (Integer integer : array) { System.out.print(integer+","); } // 数组刚开始,还未排序。传入的的数据为:数组,从哪个位置开始排序,到什么位置结束 System.out.println("\n排序后"); new QuickSortTest().sortFactory(array, 0, array.length-1 ); for (Integer integer : array) { System.out.print(integer+","); } } public void sortFactory(Integer[] array, Integer left, Integer right) { Integer start = left; Integer end = right; /*这里是重点(right+left)/2。 *我之前在这里出错找了很久.middle要取数组中间那个元素才行。之前都写成(array.length+1)/2。 *错误情况下排序,结果造成了排序对比的元素不正确。 */ Integer middle = array[(right + left) / 2]; Boolean isEnd = false; Integer tempDate; while (!isEnd) { // 找出左边比中间值大的数,如果没有则继续循环 while (array[start].compareTo(middle) < 0 && start < right) { start++; } // 找出右边比中间值大的数,如果没有则继续循环 while (array[end].compareTo(middle) > 0 && end > left) { end--; } // 将左边大的数和右边小的数进行替换 if (start <= end) { tempDate= array[start]; array[start] = array[end]; array[end] = tempDate; start++; end--; } if (!(start <= end)) { isEnd = true; } } if (start < right) { sortFactory(array, start, right); } if (end > left) { sortFactory(array, left, end); } }}
- JAVA排序之快速排序法(源自张孝祥面试题)
- java排序之快速排序
- Java 排序之 快速排序
- java排序之快速排序
- Java 排序之 快速排序
- Java排序之【快速排序】
- java排序之 --- 快速排序
- 快速排序之Java
- java之快速排序
- java之快速排序
- java之快速排序
- Java之快速排序
- 学习笔记之快速排序法 --java
- java算法之快速排序法
- 排序算法之快速排序法(Java实现)
- 面试题总结之快速排序
- 排序算法之快速排序(JAVA)
- java排序之壹------快速排序代码
- 【CXY】JAVA基础 之 Runtime
- 九度OJ 二分求幂法、快速取模之《root(n,k)》
- linux下电话开发程序编写及运行思路
- 几个JS小代码
- OCI快速入手(一) OCI简介 --张磊
- JAVA排序之快速排序法(源自张孝祥面试题)
- ACCESS+ASP 实现数据随机排序
- 第一辑 回家的路--完美的形象
- 专访魏子钧:喧嚣后的HTML5和JavaScript将长存
- 通过代码来实现网页截图
- .函数式编程初探
- Lambda表达式
- 第一辑 回家的路--孝子
- Scala编程语言