計數排序Java代碼實現
阿新 • • 發佈:2018-08-06
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代碼實現