zoukankan      html  css  js  c++  java
  • 稳定的快排

    
    
        if (s >= e) return s;
        int b[7];
        int pa1, pa2, pb1, pb2;
        pa1 = pb1 = s; pa2 = pb2 = e;
        int start = s, end = e;
        int key = a[s];
        for (int i = s + 1; i <= e;i++)
        if (a[i] >= key)b[pb1++] = a[i];
    
        for (int i = e; i > s; i--)
        if (a[i] < key)b[pb2--] = a[i];
    
        for (int i = pb2 + 1; i <= e; i++)
            a[start++] = b[i];
        int idx = start ;
        a[start++] = key;
        for (int i = s; i < pb1; i++)
            a[start++] = b[i];
    
        return idx;
    
    

    要实现稳定的快排必须使用额外的空间,每次扫两次数组,把大于key和小于key的放在额外数组两侧,然后拷贝到原数组中。

     
  • 相关阅读:
    快速排序
    冒泡排序
    桶排序
    Writer及其子类
    Reader及其子类
    OutputStream及其子类
    InputStream及其子类
    基础IO类和相关方法
    File类
    枚举
  • 原文地址:https://www.cnblogs.com/dynas/p/7247772.html
Copyright © 2011-2022 走看看