我的shell排序算法有問題。它是50個數字的矢量,並希望按遞增順序排序。它起作用很好,但當差距= 1時,它只是迭代一次然後停止。我認爲它與while(inner < getElementCount()- gap){
條件有關,因爲我希望它迭代,直到向量排序。在過去的幾個小時裏我一直在努力,真的需要som的幫助!Shell排序算法沒有完成
public void shellSort() {
int inner = 0;
int outer = 0;
float gap = getElementCount()/(float)2.2;
while(inner < getElementCount()- gap) {
for(inner = 0; inner < getElementCount() - gap; inner++) {
outer = inner + (int)gap;
if(cmp(outer,inner)< 0) {
swap(outer,inner);
}
else {
while(cmp(outer,inner) > 0) {
outer--;
}
if(gap!=1 && inner < outer) {
swap(outer,inner);
}
}
}
if(gap <= 2.2) {
gap = 1;
}
else {
gap = gap/(float)2.2;
}
}
}
如何才能「而」條件返回false,如果內環永遠不會增加「內部」超越「getElementCount() - 差距」? – 2015-02-23 16:57:25
錯誤是這個'shell'與標籤'shell'有關嗎? – luk32 2015-02-23 17:03:12
顯然不是。編輯。 – Filip 2015-02-23 17:12:40