新しいソートアルゴリズムについて考えましたが、明らかな解決策の問題を理解できませんでした:
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 タイプを「Integer」に変更します。
2 . LongSorted の初期化 "for" の 'i' の値を '1' に変更します。
3 . 最後の「for」の前の前の行に、次の条件を追加します。
if(LongSorted[0]!=null)
arr[0]=0;
4 . 最後の「for」の「i」の値を「1」に変更します。
Tnx!