计数排序
程序员文章站
2022-03-24 13:49:16
...
package busishentu;
import java.util.Arrays;
public class JiShuSort {
public static void main(String[] args) {
int[] arr={2,4,5,6,7,81,5,3};
int[] crr=JiShuSort(arr);
System.out.println(Arrays.toString(crr));
}
public static int[] JiShuSort(int[] arr){
int max=arr[0];
int min=arr[0];
for(int n:arr){
//如果数组arr小于
if(n<min){
min=n;
}
if(n>max){
max=n;
}
}
int[] brr=new int[max-min+1];
//循环遍历 旧数组进行计数排序
for(int n:arr){
brr[n-min]+=1;
}
//创建最终数组
int[] crr=new int[arr.length];
//记录最终数组的下标
int index=0;
//先循环每一个元素 技术排序器的下标中
//里层循环出现的次数
for(int i=0;i<brr.length;i++){
for(int j=0;j<brr[i];j++){
crr[index++]=i+min;
}
}
return crr;
}
/*public int[] sort(int[] arr) {
int max=arr[0];
for(int i=0;i<arr.length;i++) {
if(max<arr[i])
max=arr[i];
}
int c[]=new int[max+1];
int b[]=new int[arr.length];
for(int i=0;i<arr.length;i++) {
c[arr[i]]+=1;
}
System.out.println(Arrays.toString(arr));
for(int i=1;i<c.length;i++) {
c[i]+=c[i-1];
}
System.out.println(Arrays.toString(c));
for(int i=arr.length-1;i>=0;i--) {
b[c[arr[i]]-1]=arr[i];
c[arr[i]]-=1;
}
System.out.println(Arrays.toString(c));
return b;
}
public static void main(String[] args) {
int arr[] = { 4, 1, 6, 5, 3, 7, 2, 9, 1};
System.out.println(Arrays.toString((arr)));
}*/
}