zoukankan      html  css  js  c++  java
  • 简单的实现快速排序(适合小白入门)

    
    
     1 /*
     2     此篇博文适用于像我一样的小白;
     3     首先,你要大概了了解快排的基本原理;
     4     快排的实现有网上很多种,我自认为下面这种相对好理解的;
     5     废话不多说,上代码;
     6     注:下面的实现对数组元素升序的快速排序方法;
     7 
     8 */
     9 class QuickSort {
    10     public static void main(String[] args) {
    11         int[] a = {1, 8, 5, 9, 0, 2};
    12         
    13         int start = 0;
    14         int end = a.length - 1;
    15         quickSort(a, start, end);//应用快速排序方法 
    16         
    17         //显示排序后的数组 
    18         for(int i: a) {
    19             System.out.println(i);
    20         }    
    21     }
    22     
    23     /**快速排序方法*/ 
    24     /**a:要排序的数组
    25      * start:这里选取的是第一个数,这里是索引号,始终拿这个数和其他数比较,
    26      * end;最后一个元素,这里是索引号;
    27      */
    28     public static void quickSort(int[] a, int start, int end) {
    29         //flag表示快排时游标移动的方向;若为false表“左->右”,若为true表“右->左”;
    30         boolean flag = true;  
    31         int i = start;
    32         int j = end;
    33         
    34         if(i >= j) { // 判断是否到中间了,这也是递归的结束条件;
    35             return ;
    36         }
    37         
    38         while(i != j) {
    39             //若是前面的数大于后面的数,那么两个数就交换;
    40             if(a[i] > a[j]) {
    41                 int t = a[i];
    42                 a[i] = a[j];
    43                 a[j] = t;
    44                 //只有经过数的交换后,才能把游标移动的方向改变;
    45                 flag = !flag;
    46             }
    47             //根据flag的值决定下标移动,还是上标移动 ,使游标更改走下一个数据;
    48             if(flag) 
    49                 j--;
    50             else
    51                 i++;
    52         }
    53         //上面的循环结束后,i和j都指向同一位置;要进行下一次的排序,就要将i,j分别移向两边;
    54         i--;
    55          j++;
    56       //通过递归实现整体的快速排序;
    57         quickSort(a, start, i);
    58         quickSort(a, j, end);
    59     }
    60 }
    
    
    
     
    如果我引用您的博文记录,没有指出,请求您的原谅。可以私信告诉我,我一定改正! 注:我写博文的目的主要是记录得失,若有什么误人子弟的地方,请多多见谅指正;
  • 相关阅读:
    免费在线PDF处理工具 PDF Candy
    免費線上接收簡訊多國手機門號
    Ubuntu在线体验
    进入网站自动加自己为QQ好友代码
    whmcs模板路径
    whmcs语言汉化路径
    移动硬盘文件或目录损坏且无法读取怎么修复
    WordPress博客插入直播源
    设计模式总结
    JQuery+EasyUI弹窗代码
  • 原文地址:https://www.cnblogs.com/zhaojinxin/p/5396564.html
Copyright © 2011-2022 走看看