我想到了新的排序算法,但我无法理解明显解决方案中的问题:
public int[] sort(int[] arr){
//Find the biggest number in the array
int max=1;
for(int i : arr)
if(i>max)
max=i;
//Sorting the figures into big array
int[] LongSorted= new int[max+1];
for(int i=1; i<LongSorted.length; i++)
LongSorted[i]=0;
for(int i : arr)
LongSorted[i]+=i;
//Transfer the sorted figures into the original array
int index=0;
for(int i=0; i<arr.length; i++){
while(LongSorted[index]==0){
index++;
}
arr[i]=index;
if(LongSorted[index]!=(index)){
for(int j=0; j<(LongSorted[index]/index)-1; j++){
i++;
arr[i]=index;
}
}
index++;
}
return arr;
}
基本上,该算法使用图形的值作为索引。
如果您想使用此方法,请注意不考虑数字“0”。
您可以按照以下说明进行更正:
1。将 LongSorted 类型更改为“整数”。
2 . 将 LongSorted 的初始化“for”中的“i”的值更改为“1”。
3 . 在最后一个“for”之前的前一行,添加以下条件:
if(LongSorted[0]!=null)
arr[0]=0;
4 . 将最后一个“for”中的“i”的值更改为“1”。
天呐!