AI视频生成实战:从Stable Diffusion到漫剧工坊,手把手搭建动态漫剧生成流水线
2026/8/24 8:42:55
importjava.util.Arrays;publicclassCountingSort{publicstaticvoidmain(String[]args){intarr[]={53,3,542,748,3,-14,214};System.out.println("基数排序后 "+Arrays.toString(arr));Sort(arr);System.out.println("基数排序后 "+Arrays.toString(arr));}publicstaticint[]Sort(int[]array){if(array.length==0){returnarray;}intmin=array[0];intmax=array[0];//先找出数组中的最大值与最小值for(inti=1;i<array.length;i++){if(array[i]>max)max=array[i];if(array[i]<min)min=array[i];}intbias=0-min;//创建一个长度为max-min+1长度的数组来进行计数int[]bucket=newint[max-min+1];Arrays.fill(bucket,0);for(inti=0;i<array.length;i++){//计算每个数据出现的次数bucket[array[i]+bias]++;}intindex=0,i=0;//遍历长度为max-min+1长度的数组来,来反向填充目标数组while(index<array.length){if(bucket[i]!=0){array[index]=i-bias;bucket[i]--;index++;}elsei++;}// //遍历长度为max-min+1长度的数组来,来反向填充目标数组// int index = 0;// for (int i = 0; i <bucket.length ; i++) {// while (bucket[i] !=0){// array[index] = i - bias;// bucket[i]--;// index++;// }// }returnarray;}}importjava.util.Arrays;publicclassBucketSort{publicstaticint[]bucketSort(int[]data){System.out.println("开始排序");if(data.length==0){returndata;}// 1.先找出数组中的最大值与最小值intmax=Integer.MIN_VALUE;intmin=Integer.MAX_VALUE;for(inti=0;i<data.length;i++){max=Math.max(max,data[i]);min=Math.min(min,data[i]);}intarrayLength=data.length;//2.创建一个长度为max-min+1长度的数组来进行计数int[]buckets=newint[max-min+1];//3.统计元素个数,并标记位置for(inti=0;i<arrayLength;i++){buckets[data[i]-min]++;}System.out.println(Arrays.toString(buckets));//4.统计数组做变形,后面的元素等于前面元素的和for(inti=1;i<max-min+1;i++){buckets[i]=buckets[i]+buckets[i-1];}System.out.println(Arrays.toString(buckets));//5.倒序遍历原始数组,从统计数组中找到正确位置int[]temp=newint[arrayLength];System.arraycopy(data,0,temp,0,arrayLength);for(intk=arrayLength-1;k>=0;k--){data[--buckets[temp[k]-min]]=temp[k];}returndata;}publicstaticvoidmain(String[]args){int[]data={3,5,-1,8,5,7,9,-3,1,3};System.out.println("排序之前:\n"+java.util.Arrays.toString(data));bucketSort(data);System.out.println("排序之后:\n"+java.util.Arrays.toString(data));}}