排序--快速排序

算法原理

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

代码示例

import java.util.Arrays;

public class QuickSort  {

    public static void quickSort(int array[],int low,int high){

        //递归算法出口
        if(low > high){
            return;
        }

        //定义该次排序的基准 key
        int key = array[low];
        int i = low;
        int j = high;
        //完成一次排序
        while (i<j){
            //从右往左找到第一个小于key的数
            while (i<j && array[j]>key){
                j--;
            }
            //从左往右找到第一个大于key的数

            while (i<j && array[i]<=key){
                i++;
            }
            //交换

            if (i<j){
                int p = array[i];
                array[i] = array[j];
                array[j] = p;
            }
        }

        //调整key的位置
        int p = array[i];
        array[i] = array[low];
        array[low] = p;

        //对key左边的快排
        quickSort(array,low,i-1);
        //对key右边的快排
        quickSort(array,i+1,high);
    }

    public static void main(String[] args) {

        int[] unsortedArray = {5,4,1,3,6,9,8,7,2,10};

        quickSort(unsortedArray,0,unsortedArray.length-1);

        System.out.println("最终结果:");
        System.out.println(Arrays.toString(unsortedArray));
    }
}

运行结果

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容