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

    原理:分治法

    首先在数组中找到一个基准数(一般第一个),然后将数组中比基准数小的数字移到数组左边,将比基准数大的数字移到数组右边,这样基准数两边的数组相对有序,之后继续对两个数组找出基准数然后移动,直到各分区只有一个数字为止。

    代码

    public void sort(int[] array,int begin,int end){
        if(begin<end){
            int key=array[begin];
            int i=begin;
            int j=end;
            while(i<j&&array[j]>key){
                j--;
            }
            if(i<j){
                array[i]=array[j];
            }
            while(i<j&&array[i]<key){
                i++;
            }
            if(i<j){
                array[j]=array[i];
            }
            array[i]=key;
            sort(array,begin,i-1);
            sort(array,i+1,end);
        }
    }

    性能:快速排序不稳定,基准值的比较和交换是跳跃进行的。

    平均时间复杂度O(nlogn)

    最差时间复杂度O(n^2)  每次都需要比较和交换 类似冒泡排序  每次划分都只能将序列划分为一个元素和其他元素两部

    最好的情况,每次均分两部分

    模拟排序过程:给个数组模拟排序过程

  • 相关阅读:
    分页实现
    jquery扩展提示框
    可拖拽可扩展面板
    单表查询结果转换成泛型集合
    压缩远程图片并返回
    windows下python安装架包的问题
    从网络上下载数据
    自己实现jquery
    如何利用拼音首字母查询数据库
    正则表达式
  • 原文地址:https://www.cnblogs.com/Aaron12/p/9565003.html
Copyright © 2011-2022 走看看