/** *(计数排序) * @param arr */ public static void countSort(int arr []){ if(arr == null ||arr.length < 2){ //排序数组长度限制 return ; } int max = Integer.MIN_VALUE; //获得int 类型中最小的数 for (int i = 0; i < arr.length; i++) { //遍历数组 max = Math.max(max,arr[i]); //得到数组中的最大值,以便创建足够大的桶 } int [] bucket = new int[max+1]; //创建桶,长度为max+1,为了使数组下标与最大数对应 for (int i = 0; i < arr.length; i++) { bucket[arr[i]]++; //将数组中的元素放入到桶对应的位置 } int i = 0; for (int j = 0; j < bucket.length; j++) {// 遍历桶,将有元素的下表放入arr数组中 while (bucket[j]-- > 0){ arr[i++] = j; } } }
10-06
363