我以前见过这样的话题,但几乎没有任何帮助。 我有这样的方法:
comparecount=0;
for(int i = 1; i < tab.length; i++) {
comparecount++;
for(int j = i; j > 0; j--) {
//comparecount++;
if(tab[j]<tab[j-1]) {
comparecount++;
swap(tab,j,j-1);
adjustcount+=3;
}
}
}
对于输入8 5 6 1 7 2,这应该产生13次比较,但我的确是15次。为了完全公开这是我作业的一部分,算法按照要求打印跟踪,所以我很难找到我在哪里获得额外的2次比较
答案 0 :(得分:0)
对于任何想知道我是如何解决这个问题的人。
以上算法比较了所有内容,因此计算1 5 6 8 | 7 2 -->
1 5 6 7 8 | 2
比较7比较比较8比7比6比例,它插入它,然后继续比较6比5等我怎么达到13停止计数一旦插入7。