排序算法之快速排序

2018-06-11  本文已影响0人  飞天胖

排序算法之快速排序算法

快速排序思想:
选一个基准数将所有的元素都比较一遍,将大于基准数的放到基准
数的右边,小于它的放到基准数的左边。将元素分为两个子区间,
然后比较各个子区间的元素进行排序即可;

快速排序原理:

(以升序为例)
1.首先从数组中取出一个数作为基准数
2.将大于基准数的元素放置基准数的右边,小于或者等于基准数
的放置基准数的左边。
3.对两个字区间重复以上操作,知道各个区间只有一个元素

话不多说,上干货

public static int[] quickSort(int arr[],int begin,int end){
       //设置跳出方法的地方
      if(begin>end){
          return arr;
      }
      //获取到基准数
       int key=arr[begin];
       int i=begin;
       int j=end;
       while(i<j){
       //先从右边寻找第一个小于基准数的元素
          while(i<j&&arr[j]>key){
             j--;
          }
       //从左边寻找第一个大于基准数的元素
         while(i<j&&arr[i]<=key){
             i++;
         }
       //将两个元素交换
         if(i<j){
          int tmp=arr[i];
          arr[i]=arr[j];
          arr[j]=arr[i];
         }
       //继续从交换元素的位置寻找 直到i=j 
       //这时的j下标所对应的位置是key所应当在的位置
       }
       //交换下标为j的元素和key 
        arr[begin]=arr[j];
        arr[j]=key;
       return arr;
}
public static void main(String[] args){
int arr[]=new int []{5,9,6,7,8,4,3,1,2};
System.out.println(Arrays.toString(quickSort(arr, 0, arr.length-1)));

}

运行结果:
上一篇 下一篇

猜你喜欢

热点阅读