• 快速排序


    1、快速排序介绍

      快速排序 (Quicksort) 是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分。

      其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序。

      整个排序过程可以递归进行,以此达到整个数据变成有序序列

    2、基本思想

    1. 选定Pivot中心轴
    2. 将大于Pivot的数字放在Pivot的右边
    3. 将小于Pivot的数字放在Pivot的左边
    4. 分别对左右子序列重复前三步操作

    3、实现代码

    import java.util.Arrays;
    public class Test05_快速排序Demo2 {
        public static void main(String[] args) {
            int[] arr = {19, 97, 9, 17, 1, 8};
            sort(arr, 0, arr.length - 1);
            System.out.println("排序结果为:" + Arrays.toString(arr));
        }
    
        /**
         * @param arr   数组
         * @param left  数组最左边下标
         * @param right 数组最右边下标
         * @return 返回中心轴的下标位置
         */
        public static int getMid(int[] arr, int left, int right) {
            int pivot = arr[left];
            while (left < right) {
            //left<right条件不变,最右边的数据如果大于中心轴,就让right向左移,然后继续比较
    while (left < right && arr[right] >= pivot) right--; arr[left] = arr[right]; while (left < right && arr[left] <= pivot) left++; arr[right] = arr[left]; } //left与right重合,就将中心轴所指向的数字放到重合位置上 if (left == right) arr[right] = pivot; return left; } /** * 对分割的区间进行快排 * * @param arr * @param left * @param right */ public static void sort(int[] arr, int left, int right) { if (left < right) { int mid = getMid(arr, left, right); sort(arr, left, mid - 1);//中心轴左边的区间快排 sort(arr, mid + 1, right);//中心轴右边的区间快排 } } }
  • 相关阅读:
    bash 中有效建立锁
    go 语言 Makefile 指定依赖包位置
    在 mysql 中对特定的库禁用 DDL 语句
    go 语言并发机制 goroutine 初探
    Google和facebook如何应用R进行数据挖掘
    数据应用催生商业模式
    4款语音播报来电短信应用[Android]
    让 php 用 nginx 打包 zip
    10个关于 Dropbox 的另类功用(知乎问答精编)[还是转来了]
    分析以数据挖掘技术预测用户流失情况的方法
  • 原文地址:https://www.cnblogs.com/zhangzhixi/p/13697908.html
Copyright © 2020-2023  润新知