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

    利用挖坑填数+分治实现的快排

    代码如下:

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Formatter;
    import java.util.HashMap;
    import java.util.Map;
    
    public class TestJava {
    
        public static void main(String[] args) {
    
            String string = readFromConsole();
    
            System.out.println("input:" + string);
    
            char chs[] = string.toCharArray();
    
            qSort(chs, 0, chs.length - 1);
    
            System.out.println("after sorted:" + new String(chs));
    
        }
    
        private static void qSort(char[] chs, int start, int end) {
    
            if (start >= end) {
                return;
            }
    
            char fuck = chs[start]; // 先从数列中取出一个数作为基准数。
            int left = start;
            int right = end;
    
            while (left < right) {
    
                // 跳过比基数大于等于的
                while (left < right && chs[right] >= fuck) {
                    right--;
                }
    
                // 比基数小的换到左边
                if (left != right) {
                    chs[left] = chs[right]; // 用这次的值填上次的坑。
                    left++;
                }
    
                while (left < right && chs[left] < fuck) {
                    left++;
                }
    
                // 比基数大的换到右边
                if (left != right) {
                    chs[right] = chs[left];
                    right--;
                }
            }
    
            chs[left] = fuck; // 把基数放到中间
            qSort(chs, start, left);
            qSort(chs, left + 1, end);
        }
    
        /**
         * 从终端输入一行字符串
         * 
         * @return
         */
        private static String readFromConsole() {
            String inStr = null;
    
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    System.in));
    
            try {
                inStr = reader.readLine();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return inStr;
        }
    }
  • 相关阅读:
    抽象类、接口
    静态联编、动态联编
    多态
    QML、Qt Quick
    重载、多态、继承、封装
    异步消息postEvent更新界面
    联合体union
    使用 Git@OSC 管理代码
    excel数据生成sql insert语句
    excel数据生成sql insert语句
  • 原文地址:https://www.cnblogs.com/wliangde/p/3698676.html
Copyright © 2011-2022 走看看