JAVA 鸽巢排序法

用此排序最大的特点就是提前知道需要排序的数组,特别是其中的最大值

举一实例:
int[] arr = {12,18,64,98,18,94,16,85,4};
int[] temp = new int[98 + 1];
//申请的一个大小为所要排序数组中的最大数加1的临时数组
for(int i = 0;i<arr.length;i++){
temp[arr[i]]++;
}
for(int i = 0;i<temp.length;i++){
//此处必须注意数组的长度越界问题
// Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException
while(temp[i] != 0){
System.out.print(i + " ");
temp[i]–;
}
}

注意:
此方法虽然相对冒泡排序法时间复杂度更小,但是增大了空间复杂度
如果需要排序的数组是一些相隔较大的数,则相当浪费空间

猜你喜欢

转载自blog.csdn.net/weixin_44895008/article/details/89322119
今日推荐