• java快速排序代码


     1 public class test1
     2 {
     3     public static int partition(int[] array,int lo,int hi){
     4             int key=array[lo];
     5             while(lo<hi){
     6                 while(array[hi]>=key&&hi>lo){//从后半部分向前扫描
     7                     hi--;
     8                 }
     9                 array[lo]=array[hi];
    10                 while(array[lo]<=key&&hi>lo){//从前半部分向后扫描
    11                     lo++;
    12                 }
    13                 array[hi]=array[lo];
    14             }
    15             array[lo]=key;
    16             return lo;
    17     }
    18     
    19     public static void quick_sort(int[] array,int lo ,int hi){
    20         if(lo>=hi){//如果下标不符合要求,就需要return
    21             return ;
    22         }
    23         int index=partition(array,lo,hi);
    24         sort(array,lo,index-1);
    25         sort(array,index+1,hi); 
    26     }
    27     public static void main(String args[]){
    28     int a[] = {1,3,29,2,78,11,33,25};
    29     quick_sort(a,0,7);
    30     for (int j = 0;j<a.length ;j++ )
    31     {
    32         System.out.println(a[j]);
    33     }
    34     }
    35 }

    快速排序的时间复杂度位O(nlogn),记忆口诀:跟着我右手左手一个慢动作,右手左手慢动作重播。

  • 相关阅读:
    3D照片放大展示窗口
    [NOI2015]品酒大会
    [SDOI2016]排列计数
    [SCOI2008]奖励关
    HDU4336 Card Collector
    CF540D Bad Luck Island
    [NOI2016]网格
    HDU3076 ssworld VS DDD
    [USACO10HOL]赶小猪
    CF113D Museum
  • 原文地址:https://www.cnblogs.com/g177w/p/8341259.html
Copyright © 2020-2023  润新知