java比较计数排序算法求教

蓝海丶丶 2017-12-13 05:12:19
为什么下面这段代码输出的时候会出现两次13,求指教。。
public class CountSort {
public static void main(String[] args) {
int N = 17;
int[] A = {777,888,999,444,555,666,111,222,333,100,200,300,400,500,600,700,800};
int[] COUNT = new int[17];
for(int i=0; i<=N-1; i++){
COUNT[i] = 0;
}
for(int i=0; i<N-2; i++){
for(int j=i+1; j<=N-1; j++){
if(A[i] < A[j]){
COUNT[j]++;
}else{
COUNT[i]++;
}
}
}
System.out.println("COUNT:");
for(int i=0; i<=N-1; i++){
System.out.println("COUNT["+i+"]="+COUNT[i]);
}
System.out.println("A:");
for(int i=0; i<=N-1; i++){
for(int j=0; j<=N-1; j++){
if(COUNT[j] == i){
System.out.println((COUNT[j])+":"+A[j]);
}
}
}
}
}
...全文
129 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
thinking code 2017-12-13
  • 打赏
  • 举报
回复
不知道你这个程序想表达什么
鱿鱼ing 2017-12-13
  • 打赏
  • 举报
回复
for(int i=0; i<=N-2; i++){ for(int j=i+1; j<=N-1; j++){ if(A[i] < A[j]){ COUNT[j]++; }else{ COUNT[i]++; } } } 少计算一次 导致COUNT[16]=13 实际为COUNT[16]=14
soton_dolphin 2017-12-13
  • 打赏
  • 举报
回复
把所有的 <= 改成 <, 比如 i <= N-1 改成 i < N

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧