快速排序java语言描述
来源:互联网 发布:传奇h5源码论坛 编辑:程序博客网 时间:2024/05/17 23:47
快速排序是一种很好的排序算法 ,最坏运行时间为Θ(n^2),期望的运行时间为Θ(nlgn),
并且是原地排序。
像合并排序一样,快速排序用到了分治法和递归的思想。
- 数组nums[start,end]被划分为两个(可能为空)子数组nums[start,q-1]和nums[q+1,end],
使得nums[start,q-1]中的每个元素都小于nums[q],nums[q+1,end]中的大于等于nums[q]。
- 通过递归调用快速排序,对子数组nums[start,q-1]和nums[q+1,end]排序。
- 因为 子数组都是就地排序的,将它们合并起来并不需要操作:整个nums数组已排序好。
/** * * @author Administrator * */public class QuickSort {private static int[] nums = new int[10];public QuickSort() {for (int i = 0; i < nums.length; i++) {nums[i] = (int) (Math.random() * 100);}}/** * 输出数组 */static void showNumbers() {for (int i = 0; i < nums.length; i++) {if (i % 10 == 0) {System.out.println();}System.out.printf("%4d", nums[i]);}}/** * 数组划分函数,算法关键所在! * @param nums * @param start * @param end * @return */private int partition(int[] nums, int start, int end) {int i = start - 1;for (int j = start; j < end; j++) {if (nums[j] <= nums[end]) {i += 1;swap(nums, i, j);}}swap(nums, i + 1, end);return (i + 1);}/** * * @param nums * @param start * @param end */public void quickSort(int[] nums, int start, int end) {if (start < end) {int q = partition(nums, start, end);quickSort(nums, start, q - 1);quickSort(nums, q + 1, end);}}/** * * @param nums * @param i * @param j */private void swap(int[] nums, int i, int j) {int temp = nums[i];nums[i] = nums[j];nums[j] = temp;}/** * @param args */public static void main(String[] args) {// TODO 自动生成的方法存根QuickSort sort = new QuickSort();showNumbers();System.out.println();sort.quickSort(nums, 0, nums.length - 1);showNumbers();}}
运行输出:
- 快速排序java语言描述
- 快速排序算法 java语言描述
- 快速排序(JAVA描述)
- 快速排序 C语言描述
- 排序算法c语言描述---快速排序
- 快速排序(Java描述)
- 合并排序 java语言描述
- 堆排序java语言描述
- 冒泡排序java语言描述
- 归并排序-java语言描述
- Java语言描述:递归与分治策略之合并排序与快速排序
- Java语言 快速排序
- 数据结构与算法分析(Java语言描述)(7)—— 快速排序
- 数据结构与算法分析(Java语言描述)(8)—— (随机)快速排序
- 数据结构与算法分析(Java语言描述)(9)—— (双轴)快速排序
- 排序算法c语言描述-快速排序随机化
- 19、排序算法c语言描述---快速排序
- 冒泡排序法的Java语言描述
- PHP实现MVC
- 有关IE常见bug
- NewGuide之touch事件以及cut a hole in UIView
- PHP MVC留言本实例
- FlexiGrid使用手册
- 快速排序java语言描述
- 文件浏览管理文章
- 搜索优化中,那些被忽略掉的致命问题!
- CF 269D Maximum Waterfall(线段树,DP)
- main函数的返回值
- makefile 获取指定目录下源文件名称
- java生成excel数据并打包成zip
- 非常见SQL注入漏洞及利用 Unusual SQL injection vulnerabilities and how to exploit them
- 我决定坚持写技术博客