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] + " "); } }}