A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不想睡 中级黑马   /  2015-8-27 23:41  /  224 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 不想睡 于 2015-8-27 23:46 编辑

快速排序:当今公认的最好的排序算法之一,它是对冒泡排序的一种改进。思想是将要排序的数组分围独立的两部分,其中一部分的所有数组元素值比另一部分的所有元素值都要小,而每一小部分数组的排序有可以继续分解为更小的两部分,这样递归分解下去,直到数组长度的大小最大为2.


以下是代码


public class QuickSort{
  public static void main(String[] args){
     int array[]={2,44,23,5,34,13,29,6,24,26,18,10,25,12,17};
     array=quickSort(array,0,array.length-1);
     for(int i=0;i<array.length;i++){
        System.out.print(array+" ");
      }
      
      System.out.println();
   }
   //快速排序算法
   
   public static int[] quickSort(int[] arr,int lowIndex,int highIndex){
      if(lowIndex < highIndex){
          int s = arr[lowIndex];
          int i = lowIndex;
          int j = highIndex+1;
          while(true){
             while(i+1<arr.length&&arr[++i]<s) ; //向右寻找大于S的数组元素的索引
               while(j-1>-1&&arr[--j]>s);  //向左寻找小于S的数组元素的索引
               if(i>=j){
                  break;
                }else{
                  int temp = arr;
                  arr = arr[j];
                  arr[j] = temp;
                 }
           }
           
           arr[lowIndex]= arr[j];
           arr[j] = s;
           quickSort(arr,lowIndex,j-1);
           quickSort(arr,j+1,highIndex);
       }
      
       return arr;
    }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马