时间复杂度问题:
第一个循环:确认桶的个数temp.length个,循环了 m 次
第二个循环:待排序个数arr.length个,循环了 n 次
第三个循环:遍历桶拿到对应桶中的数据,循环了 m+n 次
时间复杂度O=(m+n+m+n)= 2*(m+n)
时间复杂度可以忽略较小的常数
所以 时间复杂度可以为 O=(m+n)
通常为大写字母 O= (M+N)
/**
* @Description 简单桶排序实现
* @Author wz
* @Date 2021/11/39:54
**/publicclassDemo1{publicstaticvoidbucSort(int[] arr){//假设第一数就是最大数int max = arr[0];for(int i =1; i < arr.length; i++){if(arr[i]> max){
max = arr[i];}}//假设第一步就是最小值int min = arr[0];for(int i =1; i < arr.length; i++){if(arr[i]< min){
min = arr[i];}}//初始化数组 *确认桶的个数temp.length个*int[] temp =newint[max-min+1];//循环读入数据 for(int i =0; i < arr.length; i++){
temp[arr[i]-min]++;}//for(int j =0; j < temp.length; j++){if(temp[j]!=0){for(int k =0; k < temp[j]; k++){System.out.println(j+min+"");}}}}publicstaticvoidmain(String[] args){int[] test ={-1,2,2,5,3,4,-2};bucSort(test);}}