排序算法之快速排序
2017-08-30 13:48
225 查看
package com.lin.sort; /** * @author 作者 林尤庆 * @version 创建时间:2016-8-12 下午02:42:05 * 类说明 :快速排序法(Quick Sort) * * 快速排序的最坏时间复杂度为O(n^2). * 快速排序所占用的辅助空间为递归时所需栈的深度,故空间复杂度为O(log2(n))。同时,快速排序是不稳定的排序。 */ public class QuickSort { public void swap(int a[],int i,int j){ int temp=a[i]; a[i]=a[j]; a[j]=temp; } public int partSort(int a[],int low,int high){ int pivot,p_pos,i; p_pos=low; pivot=a[p_pos]; for(i=low+1;i<=high;i++){ if(a[i]>pivot){ p_pos++; swap(a, p_pos, i); } } swap(a, low, p_pos); return p_pos; } public void quicksort(int a[],int low,int high){ int pivot; if(low<high){ pivot=partSort(a, low, high); quicksort(a, low, pivot-1); quicksort(a, pivot+1, high); } } public static void main(String[] args) { // 快速排序法(Quick Sort) int vec[] = new int[] { 37, 46, 33, -5, 17, 51 }; QuickSort s = new QuickSort(); long begin = System.currentTimeMillis(); for (int k = 0; k < vec.length; k++) { s.quicksort(vec, 0, vec.length-1); } long end = System.currentTimeMillis(); System.out.println("快速法用时为:" + (end - begin)); // 打印排序好的结果 for (int i = 0; i < vec.length; i++) { System.out.print(vec[i]+" "); } } }
测试结果:
快速法用时为:0 51 46 37 33 17 -5
相关文章推荐
- 排序算法总结(归并排序、快速排序)(python实现)
- 排序算法 - 快速排序(Quick Sort)
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 算法 排序算法之交换排序--冒泡排序和快速排序
- 06_程序员必须掌握的8大排序算法_快速排序
- 排序算法之快速排序(JAVA)
- 复习数据结构:排序算法(五)——快速排序的各种版本
- 排序算法-快速排序(入门)
- 简单的排序算法——插入排序,选择排序,交换排序(冒泡排序,快速排序)
- 排序算法-->直接排序,冒泡排序,快速排序
- 漫谈经典排序算法:三、冒泡排序 && 快速排序
- 排序算法Java实现(快速排序)
- 排序算法之快速排序
- 排序算法系列八(快速排序)
- 排序算法之快速排序
- 排序算法之快速排序
- JAVA排序算法大整理——快速排序
- 排序算法之快速排序