public int[] indexSort(){
int[] sortedarr = new int[max];
for(int i=0;i<max;i++){
int key=0;
int duplicates = 0;
for(int j=0;j<max;j++){
if(arr[i]>arr[j]) key++;
else if(arr[i]==arr[j]) duplicates++;
}
while(duplicates>0&&key<max){
sortedarr[key] = arr[i];
key++;
duplicates--;
}
}
return sortedarr; }
while循环如何工作?即使没有重复项(重复项= 0),仍然会执行while循环。
我的思绪很困惑。是否应该由O(n ^ 3)运行索引排序?
答案 0 :(得分:1)
总是有一个“重复”:i == j
。
你应该在i+1
:
for(int i=0;i<max;i++){
int key=0;
int duplicates = 0;
for(int j=i+1;j<max;j++){