java 线性排序 counting sort

来源:互联网 发布:mac版itunes备份路径 编辑:程序博客网 时间:2024/05/16 16:04
package com.sort;/** *  for i <- 1 to k *      do C[i] = 0 *  for j <- 1 to n *      do C[A[j]] <- C[A[j]] + 1 *  for i <- 2 to k *      do C[i] <- C[i] + C[i-1] *  for j <-n downto 1 *      do B[C[A[j]]] <- A[j] *         C[A[j]] <- C[A[j]] - 1   * */public class CountingSort {        public static void main(String[] args) {        int[] a = {6, 10, 13, 5, 8, 3, 2, 11, 1};                int[] b = countingSort(a, 13 + 1);        display(b);    }        // k 为数组a的最带值    static int[] countingSort(int[] a, int k) {        int[] c = new int[k];        int[] b = new int[a.length];        int i;        int j;                for (i=0; i<k; i++) {            c[i] = 0;        }                for (j=0; j<a.length; j++) {            c[a[j]] = c[a[j]] + 1;        }                for (i = 1; i<k; i++) {            c[i] = c[i] + c[i-1];        }                for (j=a.length-1; j>=0; j--) {            b[c[a[j]]-1] = a[j];            c[a[j]] = c[a[j]] - 1;        }        return b;    }        static void display(int[] a) {        for (int i = 0; i < a.length; i++) {            System.out.print(a[i] + " ");        }    }}

原创粉丝点击