• 快速排序


    快速排序

    快速排序的思路:

    1. 找到基准数据(一般找数组的第一个位置)

    2. 对这个数组进行分析,将比基准数据小的放到左侧,比基准数据大的放到右侧

    3. 找到基准数据所在的坑,然后分析基准数据两侧的数组,重复上面的步骤

    对于一个数组{21,32,43,97,21,5,66}

    选择21为基础值,比较21与最右侧的值的大小,一步一步移动high游标

    到达右侧第二个位置,可以看出5比21小,小的都要移动到左侧

    从左往右比较,开始移动左侧的low游标,比较与base,如果大于base交换

    开始移动high游标,找比base值小的

     

    这样一次位置就找好了,21左侧都是比他小的,右侧都是比他大的,分别对左右两侧进行相似的过程

    程序实例如下:

    public class QuickSort{
        public static void main(String[] args){
            int[] arr =new int[10];
            System.out.print("原数组为:");
            for(int i = 0;i<10;i++){
                double temp = 100*Math.random();
                arr[i] =(int)temp;
                System.out.print(arr[i] + " ");
            }
            System.out.println();
            System.out.print("排序后的数组为:");
    
            quickSort(arr,0, arr.length - 1);
            for(int i =0 ;i<= arr.length - 1;i++){
                System.out.print(arr[i]+ " ");
            }
        }
    
        public static void quickSort(int[] arr, int low, int high){
            if(low >= high) {
                return;
            }
            int division = quick(arr, low, high);
            quickSort(arr, low, division - 1);
            quickSort(arr, division + 1, high);
        }
    
        public static int quick(int[] arr, int low , int high){
            while(low < high){
                while(low < high && arr[low] < arr[high]){
                    high--;
                }
                swap(arr, low, high);
                while(low < high && arr[low] < arr[high]){
                    low++;
                }
                swap(arr, low, high);
            }
            return low;
        }
    
        public static void swap(int[] arr, int low, int high){
            int temp = arr[low];
            arr[low] = arr[high];
            arr[high] = temp;
        }
    }
    

      

  • 相关阅读:
    前端 CSS
    前端 HTML
    前端 JavaScript 初识
    网络编程——线程池
    网络编程——同一进程中的队列(多线程)
    网络编程——进程间的共享内存
    vue实现前端简易版模糊查询
    封装axios请求拦截器
    关于node中 mysql Client does not support authentication protocol requested by server; consider upgrading MySQL client 解决方法
    封装一个时间方法
  • 原文地址:https://www.cnblogs.com/zhangchiblog/p/8660087.html
Copyright © 2020-2023  润新知