zoukankan      html  css  js  c++  java
  • 任意长度快排

    快排定义:

                 借鉴wiki对之的定义:http://en.wikipedia.org/wiki/Quicksort

    代码实现:

     1 public class Quicsort {
     2     
     3     
     4     public void _quickSort(Integer[] list, int low, int high) {
     5         if (low < high) {
     6             int middle = getMiddle(list, low, high);  
     7             _quickSort(list, low, middle - 1);        //递归调用
     8             _quickSort(list, middle + 1, high);       
     9         }
    10         //System.out.println(low);
    11         
    12     }
    13 
    14     public void quick(Integer[] str) {
    15         if (str.length > 0) {   
    16             _quickSort(str, 0, str.length - 1);
    17         }
    18     }
    19     
    20     private int getMiddle(Integer[] src, int start, int end) {
    21         int tmp = src[start];
    22         while (start < end) {
    23             while (start < end && src[end] >= tmp) {
    24                 end--;
    25             }
    26             src[start] = src[end];
    27             while (start < end && src[start] <= tmp) {
    28                 start++;
    29             }
    30             src[end] = src[start];
    31         }   
    32         src[start] = tmp; //一次排序
    33         return start;     //返回小于tmp的个数即实现分割
    34     }
    35 
    36 
    37 }
    import java.util.*; 
    public class Test{  
          
       
          public static void main(String[] args) {  
              Scanner br=new Scanner(System.in);
              String f; 
              f=br.nextLine();     //把输入的字符串赋给f
              br.close();
              String  k[];
              k=f.split(" ");      //把f通过空格分割成字符串数组赋给字符串数组k
             
              ArrayList<Integer> y = new ArrayList<Integer>(); 
              for(int i=0;i<k.length;i++){
                  String m=k[i];
                  y.add(Integer.parseInt(m));
                  // System.out.println(y.get(i)); 用于测试是否分割成功
                  
              }
              Integer [] list ;
              list=(Integer[])y.toArray(new Integer[1]);  //把ArryList转换成Integer数组
              Quicsort qs=new Quicsort();  
                 qs.quick(list);  
                  for(int i=0;i<list.length;i++){  
                      System.out.print(list[i]+" ");  
                  }  
                   System.out.println();  
    
            }  
      
    }  
  • 相关阅读:
    使用element-ui的table组件时,渲染为html格式
    vue-quill-editor富文本编辑器,添加了汉化样式却汉化不了
    MySQL版本问题导致的SQLException
    MySQL中 ORDER BY 与 LIMIT 的执行顺序
    MySQL 测试数据批量导入
    CentOS 7 安装 Maven
    CentOS 7 安装 Gradle
    CentOS 7 安装 RabbitMQ
    CentOS 7 安装 Tomcat 8.5.43
    CentOS 7 配置网络
  • 原文地址:https://www.cnblogs.com/udld/p/4046327.html
Copyright © 2011-2022 走看看