黑马程序员技术交流社区

标题: 快速排序 [打印本页]

作者: 不想睡    时间: 2015-8-27 23:41
标题: 快速排序
本帖最后由 不想睡 于 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;
    }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2