1. 程式人生 > >計數排序Java實現

計數排序Java實現

package com.coderli.algorithm.arrayandsort;

/**
 * 《演算法導論》8.2 計數排序 線性排序演算法<br>
 * 
 * <pre>
 * 計數排序假設<b>n個輸入元素的每一個都是介於0到k之間的整數。</b>
 * k為某個整數,k = O(n)時。技術排序的執行事件為&Theta;(n)
 * 
 * 
 * @author OneCoder
 * @date 2013年9月11日 下午8:15:00
 * @website http://www.coderli.com
 */
public class
CountSort { private static int[] sortArray = new int[] { 2, 5, 3, 0, 2, 3, 0, 3, 4, 1}; private static int k = 6; public static void main(String[] args) { int[] countArray = new int[k]; int[] outArray = new int[sortArray.length]; // 給元陣列中的數字計數 for (int i = 0; i < sortArray.length; i++) {
countArray[sortArray[i]] = countArray[sortArray[i]] + 1; } // 計算元素位置 for (int j = 1; j < k; j++) { countArray[j] = countArray[j] + countArray[j - 1]; } // 排序到輸出陣列 for (int h = sortArray.length - 1; h >= 0; h--) { outArray[countArray[sortArray[h]] - 1] = sortArray[h]; countArray
[sortArray[h]] = countArray[sortArray[h]] - 1; } // 列印結果 for (int n : outArray) { System.out.print(n + &quot; &quot;); } } }