Java算法----快速排序法
来源:互联网 发布:传奇装备外观算法 编辑:程序博客网 时间:2024/06/17 14:44
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。
该方法的基本思想是:
1.先从数列中取出一个数作为基准数。
2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
3.再对左右区间重复第二步,直到各区间只有一个数。
先列出算法代码:
/** * 快速排序 * @param arr 要排序的数组 * @param low 往前 * @param high 往后 */ public void sort(int[] arr, int low, int high) { int l = low; int h = high; int povit = arr[low]; while (l < h) { while (l < h && arr[h] >= povit) h--; if (l < h) { int temp = arr[h]; arr[h] = arr[l]; arr[l] = temp; l++; } while (l < h && arr[l] <= povit) l++; if (l < h) { int temp = arr[h]; arr[h] = arr[l]; arr[l] = temp; h--; } } if (l > low) sort(arr, low, l - 1); if (h < high) sort(arr, l + 1, high); System.out.println("调用sort方法排序;数组内容:["+printArray(arr)+"],第二个参数:"+low+"第三个参数:"+high); } /** * 进行排序方法测试 */ @Test public void test() { int[] a = new int[] { 9, 15, 21, 12, 3, 11, 4, 32, 27 ,21}; sort(a, 0, a.length - 1); } /** * 编写一个方法,将数组的内容拼成字符串输出 * @param arr 要输出的数组 */ public String printArray(int[] arr){ String result = ""; for(int i=0;i<arr.length;i++){ result += arr[i]+","; } return result; }
运行后控制台输出:
调用sort方法排序;数组内容:[3,4,9,12,21,11,15,32,27,21,],第二个参数:0第三个参数:0
调用sort方法排序;数组内容:[3,4,9,12,21,11,15,32,27,21,],第二个参数:0第三个参数:1
调用sort方法排序;数组内容:[3,4,9,11,12,21,15,32,27,21,],第二个参数:3第三个参数:3
调用sort方法排序;数组内容:[3,4,9,11,12,15,21,32,27,21,],第二个参数:5第三个参数:5
调用sort方法排序;数组内容:[3,4,9,11,12,15,21,21,27,32,],第二个参数:8第三个参数:8
调用sort方法排序;数组内容:[3,4,9,11,12,15,21,21,27,32,],第二个参数:7第三个参数:8
调用sort方法排序;数组内容:[3,4,9,11,12,15,21,21,27,32,],第二个参数:7第三个参数:9
调用sort方法排序;数组内容:[3,4,9,11,12,15,21,21,27,32,],第二个参数:5第三个参数:9
调用sort方法排序;数组内容:[3,4,9,11,12,15,21,21,27,32,],第二个参数:3第三个参数:9
调用sort方法排序;数组内容:[3,4,9,11,12,15,21,21,27,32,],第二个参数:0第三个参数:9
前面的都是方法递归调用产生的输出,最后一行为main方法进行调用的sort方法输出的内容
具体意思后续再写出来.
- Java算法----快速排序法
- java快速排序算法
- Java快速排序算法
- Java快速排序算法
- Java快速排序算法
- java快速排序算法
- java快速排序算法
- JAVA快速排序算法
- java快速排序算法
- 快速排序算法(java)
- java快速排序算法
- java 快速排序算法
- Java算法快速排序
- java 快速排序 算法
- java快速排序算法
- java 快速排序 算法
- Java快速排序算法
- 快速排序算法java
- POJ1947 Rebuilding Roads【树形DP】
- 【JZOJ 5272】 神奇的重复序列
- NOIP2003神经网络题解
- Java算法----递归求N个正数的最小公倍数
- Java算法----冒泡排序法
- Java算法----快速排序法
- Assets.xcassets 应用
- vue的安装
- Navicat 2003-can't connect to MYSQL server on 'localhost'(10038)
- Spring编程<四>
- Postfix邮件服务器搭建之软件安装与配置
- Spring实现AOP的多种方式
- iOS 懒加载一键生成工具(MacOS 应用)
- Android最简单的实现View拖拽跟随手指移动效果