数据结构与算法分析(Java语言描述)(7)—— 快速排序
来源:互联网 发布:h3c查看端口状态 编辑:程序博客网 时间:2024/06/06 00:21
伪代码
for each (unsorted) partitionset first element as pivot storeIndex = pivotIndex + 1 for i = pivotIndex + 1 to rightmostIndex if element[i] < element[pivot] swap(i, storeIndex); storeIndex++ swap(pivot, storeIndex - 1)
QuickSort.java
package com.algorithm.sort;public class QuickSort { private QuickSort(){} public static void sort(Integer[] arr){ int n = arr.length; sort(arr, 0, n-1); } // 递归使用快速排序,对arr[l...r]的范围进行排序 public static void sort(Integer[] arr, int l, int r){ if (l >= r){ return; } int p = partition(arr, l, r); sort(arr, l, p-1); sort(arr, p+1, r); } // 对arr[l...r]部分进行partition操作 // 返回p, 使得arr[l...p-1] < arr[p] ; arr[p+1...r] > arr[p] public static int partition(Integer[] arr, int l, int r){ Integer temp = arr[l]; int j = l; for(int i = l + 1; i <= r; i++){ if (arr[i].compareTo(temp) < 0){ j++; SortTestHelper.swap(arr, i, j); } } SortTestHelper.swap(arr, j, l); return j; } public static void main(String[] args){ int N = 8; Integer[] arr = SortTestHelper.generateRandomArray(N, 0, 100000); System.out.println("排序前的数组为:"); SortTestHelper.printArray(arr); Long start = System.currentTimeMillis(); QuickSort.sort(arr); Long end = System.currentTimeMillis(); System.out.println("-------------------------------------------"); System.out.println("排序后的数组为:"); SortTestHelper.printArray(arr); System.out.println("-------------------------------------------"); System.out.println("排序后的数组是否有序:"); if (SortTestHelper.isSorted(arr)){ System.out.println("数组有序~"); } else { System.out.println("数组无序!"); } System.out.println("-------------------------------------------"); System.out.println( "排序算法的运行时间为"+ " : " + (end-start) + "ms" ); }}
阅读全文
0 0
- 数据结构与算法分析(Java语言描述)(7)—— 快速排序
- 数据结构与算法分析(Java语言描述)(8)—— (随机)快速排序
- 数据结构与算法分析(Java语言描述)(9)—— (双轴)快速排序
- 数据结构与算法分析(Java语言描述)(10)—— (三向切分)快速排序
- 排序 (插入排序,快速排序,希尔排序)数据结构与算法分析-C语言描述
- 数据结构与算法分析(Java语言描述)(1)—— 选择排序
- 数据结构与算法分析(Java语言描述)(2)—— 插入排序
- 数据结构与算法分析(Java语言描述)(3)—— 冒泡排序
- 数据结构与算法分析(Java语言描述)(4)—— 希尔排序
- 数据结构与算法分析(Java语言描述)(5)—— 归并排序
- 数据结构与算法分析(Java语言描述)(13)—— 原地堆排序
- 《数据结构与算法分析(c描述》—— 快速排序
- 数据结构与算法分析(Java语言描述)(12)—— 堆排序与数组建堆
- 数据结构与算法分析(Java语言描述)(6)—— 归并排序(自底向上)
- 读书笔记:数据结构与算法分析(Java语言描述)——数据结构概论
- 数据结构与算法(7)---Java语言实现:快速排序
- 数据结构与算法分析——Java语言描述
- 《数据结构与算法分析—Java语言描述》pdf
- zcmu—1980
- 素数环
- GNSS数据下载网站
- 5.6
- es6笔记·····includes()
- 数据结构与算法分析(Java语言描述)(7)—— 快速排序
- python3-dict操作
- java 单链表简单实现
- c语言大数乘法
- 完美转发std::forward与auto/decltype的一些小知识
- 习题6.1(2)
- 扩展欧几里德求解ax + by = c 的 最小正整数解 ( x, y)
- html5手机视频直播
- 机房收费系统—子窗体如何显示