您的位置 首页 java

Java十大排序算法之快速排序

1、概念

快速排序(Quicksort),计算机科学词汇,适用领域 Pascal c++ 等语言,是对冒泡排序算法的一种改进。

2、基本思想

  1. 从数列中挑出一个元素,称为 “基准”(pivot);
  2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;
  3. 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序;

3、代码实现

 public     static   void  quicksort(int[] array,int low,int high)
    {
        if(low > high)
        {
            return;
        }
        int  i=low;
        int  j=high;
        int temp = array[low];//temp就是基准位
        while(i<j)
        {
            while(temp <= array[j] && i<j)//先看右边,依次往左递减
            {
                j--;
            }
            while(temp >= array[i] && i<j)//再看左边,依次往右递加
            {
                i++;
            }
            if(i < j )//满足条件则交换
            {
                int t = array[i];
                array[i] = array[j];
                array[j] = t;
            }
        }
        //最后将基准位与i和j相等位置的数字交换
        array[low] = array[i];
        array[i] = temp;
        //递归调用左半数组
        quicksort(array,low,j-1);
        //递归调用右半数组
        quicksort(array,j+1,high);
        
    }
    
    public static void main(String[] args) {
        int[] array ={3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
        System.out.println("排序前的数组:"+Arrays.toString(array));
        quicksort(array,0,array.length-1);
        System.out.println();
        System.out.println("排序后的数组:"+Arrays.toString(array));
    }  

文章来源:智云一二三科技

文章标题:Java十大排序算法之快速排序

文章地址:https://www.zhihuclub.com/179100.shtml

关于作者: 智云科技

热门文章

网站地图