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

計數排序Java代碼實現

for 計數排序 color i++ 比較 public turn main ava

結論:由於計數排序不是基於比較的排序,所以時間復雜度可以突破O(nlgn);計數排序時間復雜度為O(n),額外空間復雜度為O(n);

Java實現代碼如下:

 1 package com.cmbc.test1;
 2 
 3 public class CountSorting {
 4     
 5     public static void countSort(int[] arr){
 6         if(arr==null||arr.length<2){
 7             return;
 8         }
 9         int max = Integer.MIN_VALUE;
10 for(int i = 0 ;i<arr.length;i++){ 11 max = Math.max(max, arr[i]); 12 } 13 int[] help = new int[max+1]; 14 15 for(int i = 0;i<arr.length;i++){ 16 help[arr[i]]++; 17 } 18 19 int i = 0; 20 for (int j = 0; j < help.length; j++) {
21 while (help[j]-- > 0) { 22 arr[i++] = j; 23 } 24 } 25 26 } 27 28 public static void printArray(int[] arr) { 29 if (arr == null) { 30 return; 31 } 32 for (int i = 0; i < arr.length; i++) {
33 System.out.print(arr[i] + " "); 34 } 35 System.out.println(); 36 } 37 38 public static void main(String[] args) { 39 int[] arr = {1,7,3,9,2,0,3,6,9}; 40 printArray(arr); 41 countSort(arr); 42 printArray(arr); 43 } 44 45 46 }

計數排序Java代碼實現