zoukankan      html  css  js  c++  java
  • 《java数据结构与算法》系列之“快速排序"

    部门没人了,公司动作好快。。。算了,不想了!还是学知识吧,只有它不会让自己失望。

    继续我的算法学习,快速排序是应用很广的算法,看了一早上才看懂些,感觉比冒泡之类的难理解,可能主要是递归那块自己不是很理解。

     1 public class QuickSort {
     2     public static void main(String[] args) {
     3         //int a [] = {49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23};
     4         int a [] = {34,15,35,36,25,53,51} ;//初始数组
     5         //原理:选一个数,开头或结尾的数字,然后和剩下的数依次比较,
     6         // 比较一轮之后,比其大的放一边,比其小的放一边,然后依次对两边分别进行递归。
     7         QuickSort quickSort=new QuickSort();
     8         quickSort.isEmptyArray(a);
     9         for (int i=0;i<a.length;i++){
    10             System.out.print(a[i]+",");
    11         }
    12 
    13     }
    14     //拿到基准数字的位置
    15     public int getMiddleNum(int[] a,int low,int high){
    16         int basic=a[low];//数组的第一个作为比较数字
    17         while (low<high){ //如果low>=high时,说明已经是最后一轮了
    18             while (low<high && a[high]>=basic){
    19                 high--;
    20             }
    21             a[low]=a[high];//比基准小的移动到底端
    22             while (low<high && a[low]<= basic){
    23                 low++;
    24             }
    25             a[high]=a[low];//比基准大的移动到高端
    26         }
    27         a[low]=basic;//基准记录到尾部
    28         return  low; //返回基准的位置
    29     }
    30     //排序
    31     public void sort(int[] a ,int low,int high){
    32         if(low<high){
    33             int middle=getMiddleNum(a,low,high); //得到基准数字的位置(关键)
    34             sort(a,low,middle-1);  //对小于基准数字的进行递归
    35             sort(a,middle+1,high); //对大于基准数字的进行递归
    36         }
    37     }
    38     //判断数字是否为为空
    39     public void isEmptyArray(int[] a){
    40         if (a.length>0){
    41             sort(a,0,a.length-1);
    42         }
    43     }
    44 }
  • 相关阅读:
    poj 2778 AC自己主动机 + 矩阵高速幂
    Web Services 指南之:Web Services 综述
    SQL多表连接查询(具体实例)
    HibernateUtil
    哈夫曼编码问题再续(下篇)——优先队列求解
    MySQL Merge存储引擎
    程序的入口及AppDelegate窗体显示原理
    几个免费的DNS地址
    kettle与各数据库建立链接的链接字符串
    【转】利用optimize、存储过程和系统表对mysql数据库表进行批量碎片清理释放表空间
  • 原文地址:https://www.cnblogs.com/m-xy/p/3373960.html
Copyright © 2011-2022 走看看