数据结构9:快速排序
2017-08-01 21:46
211 查看
入口函数为public static void sort(long[] arr, int left, int right)
package ch09; /* * 快速排序 */ 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 displayArr(long[] arr) { System.out.print("["); for(long num : arr) { System.out.print(num + " "); } System.out.print("]"); System.out.println(); } 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); } } }
相关文章推荐
- 重学数据结构——快速排序,二分法查找
- 【数据结构】-快速排序Java实现
- 数据结构&算法学习笔记: 快速排序
- 数据结构实现(插入排序、快速排序、统计排序类模板)
- 数据结构排序之快速排序
- 数据结构排序,冒泡,快速,直接选择,直接插入,希尔
- 数据结构-快速排序
- 【python】python数据结构(七)——排序:快速排序
- 数据结构练习:快速排序
- 数据结构与算法:C++实现快速排序
- 数据结构 学习笔记(十一):排序(下):快速 / 表 / 桶 / 基数 排序,排序算法的比较
- C++数据结构--快速排序
- 《常见算法和数据结构》元素排序(6)——重头戏:快速排序
- 数据结构面试之十一——排序2(归并、快速、堆排序)
- 浅谈算法和数据结构: 四 快速排序
- 数据结构各种排序法及核心思想(冒泡、鸡尾酒、选择、插入、二分法、希尔、堆、归并、快速)
- 数据结构练习:快速排序
- 数据结构--排序算法--快速排序
- 数据结构之二分法查找、快速排序思想与实现
- 数据结构(冒泡、快速、插入等排序)PHP && JAVA --面试技巧