zoukankan      html  css  js  c++  java
  • 快排算法

    快速排序是(挖坑法)是挖坑填数 + 分治来实现

    
    
    // j负责找坑,i负责填坑(先找坑,再填坑,所以先让j左移,找出一个坑位)
    // i一开始指向基准元素,有坑了i才会去填坑(右移),i填坑后仍指向一个小元素。
    // j保证后面全是大元素,i保证前面全是小元素,j与i相遇在一个小元素(因为j先左移,所以j先到达相遇位置)。最后替换相遇位置元素和基准元素
    private static void QuickSort(int[] num, int left, int right){
            // 如果left=right,即数组中只剩一个元素时,直接返回
            if (left >= right){
                return;
            }
            // 设置最左边的元素为基准值
            int key = num[left];
            // 数组中比key小的放在左边,比key大的放在右边
            int i = left;
            int j = right;
            while (i < j){
                // j向左移动,直到碰到比key小的数
                while (num[j] >= key && i<j){
                    j--;
                }
                // i向右移动,直到碰到比key大的数
                while (num[i] <= key && i<j){
                    i++;
                }
                // i和j指向的元素交换
                if (i < j){
                    int temp = num[i];
                    num[i] = num[j];
                    num[j] = temp;
                }
            }
            num[left] = num[i];
            num[i] = key;
            QuickSort(num, left, i-1);
            QuickSort(num, i+1, right);
        }
  • 相关阅读:
    DateUtils
    Java静态绑定与动态绑定
    Mysql中实现递归查询
    架构一、核心概念
    Spring cron 表达式
    MySql点点滴滴(一)之可视化工具介绍
    java中注解的使用与实例
    3、第一个Python程序
    CSS命名
    如何在Notepad++ 中成功地安装Emmet 插件
  • 原文地址:https://www.cnblogs.com/wllhq/p/13151348.html
Copyright © 2011-2022 走看看