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

     

    /**
    * 快速排序
    * 通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,
    * 则分别对这两部分继续进行排序,直到整个序列有序。
    * @author shkstart
    * 2018-12-17
    */
    public class QuickSort {
    private static void swap(int[] data, int i, int j) {
    int temp = data[i];
    data[i] = data[j];
    data[j] = temp;
    }

    private static void subSort(int[] data, int start, int end) {
    if (start < end) {
    int base = data[start];
    int low = start;
    int high = end + 1;
    while (true) {
    while (low < end && data[++low] - base <= 0)
    ;
    while (high > start && data[--high] - base >= 0)
    ;
    if (low < high) {
    swap(data, low, high);
    } else {
    break;
    }
    }
    swap(data, start, high);

    subSort(data, start, high - 1);//递归调用
    subSort(data, high + 1, end);
    }
    }
    public static void quickSort(int[] data){
    subSort(data,0,data.length-1);
    }


    public static void main(String[] args) {
    int[] data = { 9, -16, 30, 23, -30, -49, 25, 21, 30 };
    System.out.println("排序之前: " + java.util.Arrays.toString(data));
    quickSort(data);
    System.out.println("排序之后: " + java.util.Arrays.toString(data));
    }
    }

    不积跬步,无以至千里;不积小流,无以成江海。
  • 相关阅读:
    NEO从入门到开窗(4)
    NEO从入门到开窗(3)
    NEO从入门到开窗(2)
    NEO从入门到开窗(1)
    重读大型网站技术架构
    c#并行编程
    关于使用CPU缓存的一个小栗子
    Visual Studio中从应用程序中调试SQL脚本
    JavaScript启示录
    LabVIEW工控二进制数据存储
  • 原文地址:https://www.cnblogs.com/CCTVCHCH/p/14541104.html
Copyright © 2011-2022 走看看