快速排序
2017-11-24 16:02
43 查看
排序原理:
排序源码:
排序源码:
public class QuickSort { /** * 划分数组 */ public static int partition(long arr[],int left, int right,long point) { int leftPtr = left - 1; int rightPtr = right; while(true) { //循环,将比关键字小的留在左端 while(leftPtr < rightPtr && arr[++leftPtr] < point); //循环,将比关键字大的留在右端 while(rightPtr > leftPtr && arr[--rightPtr] > point); if(leftPtr >= rightPtr) { break; } else { long tmp = arr[leftPtr]; arr[leftPtr] = arr[rightPtr]; arr[rightPtr] = tmp; } } //将关键字和当前leftPtr所指的这一个进行交换 long tmp = arr[leftPtr]; arr[leftPtr] = arr[right]; arr[right] = tmp; return leftPtr; } public static void sort(long[] arr, int left, int right) { if(right - left <= 0) { return; } else { //设置关键字 long point = arr[right]; //获得切入点,同时对数组进行划分 int partition = partition(arr, left, right, point); //对左边的子数组进行快速排序 sort(arr,left,partition - 1); //对右边的子数组进行快速排序 sort(arr,partition + 1, right); } } public static void displayArr(long[] arr) { System.out.print("["); for(long num : arr) { System.out.print(num + " "); } System.out.print("]"); System.out.println(); } public static void main(String[] args) { long[] arr = new long[10]; for (int i = 0; i < 10; i++) { arr[i] = (long)(Math.random()*99); } displayArr(arr); sort(arr, 0, arr.length - 1); displayArr(arr); } }
相关文章推荐
- 排序——快速排序(quick_sort)
- 算法导论程序14-快速排序的随机化版本(Python)
- 快速排序使用什么数据结构比较好?
- 快速排序
- 算法导论排序算法之快速排序(四)
- 算法 排序算法之交换排序--冒泡排序和快速排序
- 用JAVA实现排序算法之四:快速排序
- Java-经典排序算法(二)——快速排序
- java写的快速排序
- 蓝桥杯训练:排序——快速排序
- 快速排序的递归程序
- 《算法图解》书摘-递归/快速排序
- 快速排序
- 快速排序
- 快速排序(Quicksort)的Javascript实现
- java 快速排序非递归正确版
- MOOC清华《程序设计基础》第5章:快速排序(不分配动态空间-算法一)
- 老老实实复习算法: 5 快速排序
- 排序算法之快速排序