排序算法之快速排序

蔚落 2022-06-09 06:49 291阅读 0赞
  1. package com.lin.sort;
  2. /**
  3. * @author 作者 林尤庆
  4. * @version 创建时间:2016-8-12 下午02:42:05
  5. * 类说明 :快速排序法(Quick Sort)
  6. *
  7. * 快速排序的最坏时间复杂度为O(n^2).
  8. * 快速排序所占用的辅助空间为递归时所需栈的深度,故空间复杂度为O(log2(n))。同时,快速排序是不稳定的排序。
  9. */
  10. public class QuickSort {
  11. public void swap(int a[],int i,int j){
  12. int temp=a[i];
  13. a[i]=a[j];
  14. a[j]=temp;
  15. }
  16. public int partSort(int a[],int low,int high){
  17. int pivot,p_pos,i;
  18. p_pos=low;
  19. pivot=a[p_pos];
  20. for(i=low+1;i<=high;i++){
  21. if(a[i]>pivot){
  22. p_pos++;
  23. swap(a, p_pos, i);
  24. }
  25. }
  26. swap(a, low, p_pos);
  27. return p_pos;
  28. }
  29. public void quicksort(int a[],int low,int high){
  30. int pivot;
  31. if(low<high){
  32. pivot=partSort(a, low, high);
  33. quicksort(a, low, pivot-1);
  34. quicksort(a, pivot+1, high);
  35. }
  36. }
  37. public static void main(String[] args) {
  38. // 快速排序法(Quick Sort)
  39. int vec[] = new int[] { 37, 46, 33, -5, 17, 51 };
  40. QuickSort s = new QuickSort();
  41. long begin = System.currentTimeMillis();
  42. for (int k = 0; k < vec.length; k++) {
  43. s.quicksort(vec, 0, vec.length-1);
  44. }
  45. long end = System.currentTimeMillis();
  46. System.out.println("快速法用时为:" + (end - begin));
  47. // 打印排序好的结果
  48. for (int i = 0; i < vec.length; i++) {
  49. System.out.print(vec[i]+" ");
  50. }
  51. }
  52. }

测试结果:

  1. 快速法用时为:0
  2. 51 46 37 33 17 -5

发表评论

表情:
评论列表 (有 0 条评论,291人围观)

还没有评论,来说两句吧...

相关阅读

    相关 排序算法快速排序

    快速排序是一种基于分治思想的排序算法。它的基本思想是通过一趟排序将待排数据分割成独立的两部分,其中一部分的所有元素都比另一部分的所有元素小,然后再分别对这两部分继续进行排序,重

    相关 排序算法快速排序

    \[交换排序-快速排序\] 1.算法思想: 选择一个元素作为基准,先从右向左遍历数组寻找比基准小的数a,然后从左向右寻找比基准大的数b,交换a和b的值,当左右会面

    相关 排序算法快速排序

    > 快速排序。 > 从数组中取出一个基准数,遍历数组中的每个元素,与基准数比较大小,将小于基准数的元素放在其左侧,大于基准数的元素放在其右侧, >

    相关 排序算法快速排序

    同样的先上这张图  ![Center][] 下面分析交换排序之快速排序: 快速排序的思想是先选择一个基准元素(一般取第一个元素),然后对剩下的元素作两端遍历,左边找

    相关 排序算法快速排序

    快速排序的基本思想是:通过一趟排序将要排序的[数据分割][Link 1]成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行

    相关 排序算法快速排序

    快速排序是冒泡排序的改进版,也是最好的一种内排序,也是作为程序员必须掌握的一种排序方法。 快速排序的基本思想是 > 1、先从数列中取出一个数作为基准数 > 2、分区过程,

    相关 排序算法快速排序

    快速排序是一种高效的排序算法,它采用分而治之的思想,把大的拆分成小的,小的再拆分为更小的。 其原理是:对于给定的数组,通过一趟排序之后,将原序列分为两部分,其中前一部分的所