zoukankan      html  css  js  c++  java
  • 常见排序算法


    一、冒泡排序

    百度百科

    public static void bubbleSort(int[] ints) {
        for(int i = 0; i < ints.length - 1; i++) {
            for(int j = 0; j < ints.length - 1 - i; j++) {
                if (ints[j] > ints[j + 1]) {
                    int temp = ints[j];
                    ints[j] = ints[j + 1];
                    ints[j + 1] = temp;
                }
            }
        }
    }
    

    二、插入排序

    百度百科

    public static void insertionSort(int[] ints) {
        for (int i = 1; i < ints.length; i++) {
            int temp = ints[i];
            int j = i - 1;
            while (j >= 0 && ints[j] > temp) {
                ints[j + 1] = ints[j];
                j--;
            }
            ints[j + 1] = temp;
        }
    }
    

    三、选择排序

    百度百科

    public static void selectionSort(int[] ints) {
        for (int i = 0; i < ints.length - 1; i++) {
            int minIndex = i;
            // 每一个元素都和剩下的未排序的元素比较
            for (int j = i + 1; j < ints.length; j++) {
                if (ints[minIndex] > ints[j]) {
                    minIndex = j;
                }
            }
            // 经过一轮循环,k为本轮最小值的下标,如果最小值下标不是自己,就把最小值跟自己互换位置
            if (minIndex != i) {
                int temp = ints[i];
                ints[i] = ints[minIndex];
                ints[minIndex] = temp;
            }
        }
    }
    

    四、快速排序

    百度百科

    public static void quickSort(int[] ints, int start, int end) {
        int pivot = ints[start], i = start, j = end;
        while (i < j) {
            // 从右向左找小于pivot的数来填ints[i]
            while (i < j && ints[j] >= pivot) {
                j--;
            }
            if (i < j) {
                ints[i] = ints[j];
                i++;
            }
            // 从左向右找大于或等于pivot的数来填ints[j]
            while (i < j && ints[i] < pivot) {
                i++;
            }
            if (i < j) {
                ints[j] = ints[i];
            }
            ints[i] = pivot;
            // 左边区间快速排序
            quickSort(ints, start, i - 1);
            // 右边区间快速排序
            quickSort(ints, i + 1, end);
        }
    }
    


    尊重写作权利,转载请注明出处 ^_^
  • 相关阅读:
    活动安排问题
    CodeForces
    HDU
    HDU
    HihoCoder
    二分签到题--二分入门
    并查集,最小生成树
    spark和 mapreduce的比较
    SparkSQL--数据源Parquet的加载和保存
    SparkSQL -DataFrame与RDD的互转
  • 原文地址:https://www.cnblogs.com/convict/p/14881597.html
Copyright © 2011-2022 走看看