zoukankan      html  css  js  c++  java
  • 快速排序

        void quick(int[] arr, int left, int right){
            if(left > right){
                return;
            }
            //以基准数为分界限,将比基准线大的都移动到基准数的右边,将比基准数小的都移动到基准数的左边
            //每次找到一对就交换位置,最后确定基准数的位置
            int temp = arr[left], i = left, j = right;
            while(i != j){
                while(i < j && arr[j] >= temp){
                    //找到一个比基准数小的
                    j --;
                }
                while( i < j && arr[i] <= temp){
                    //找到一个比基准数大的
                    i ++;
                }
                if(i < j){
                    //交换比基准数小的,与基准数大的
                    int tmp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = tmp;
                }
            }
            //交换基准数的位置
            arr[left] = arr[i];
            arr[i] = temp;
    
            quick(arr, left, i - 1);
            quick(arr, i + 1, right);
        }
        void quick1(int[] arr, int left, int right){
            if(left > right){
                return;
            }
            int temp = arr[left], i = left, j = right;
            while(i != j){
                while(i < j && arr[j] >= temp){
                    //找到一个比基准数大的,将其移动到基准数的右边
                    j --;
                }
                arr[i] = arr[j];
                while( i < j && arr[i] <= temp){
                    //找到一个比基准数小的移动到基准数的左边
                    i ++;
                }
                arr[j] = arr[i];
    
            }
            //交换基准数的位置
            arr[i] = temp;
            
            quick(arr, left, i - 1);
            quick(arr, i + 1, right);
        }
  • 相关阅读:
    康托展开
    Linux Command Line Basics
    hihoCoder 1401 Registration
    C++ 参考网站
    Linux 下的常用工具
    SQL 命令
    GNU MAKE 笔记
    一道基本的计算几何题
    uva 1451 平均值
    bzoj 1826 缓存交换
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/5453405.html
Copyright © 2011-2022 走看看