1
所以,我在这个插入排序算法上很努力,我不明白为什么我会得到这个输出。我已经在纸上读过它,并且在我逐步浏览它的时候在那里工作......发生了什么?插入排序(降序) - 我在这里错过了什么?
int main(int argc, char * argv[]){
int arrayIn[5];
/* Insertion func */
printf("==============================\n");
for(int k=0; k<5; k++){
arrayIn[k] = k + 1;
}
for(int y = 0; y < 5; y++){
printf("array[%d]: %d \n", y, arrayIn[y]);
}
//insertion
for (int j = 1; j < 5 - 1; j++) {
int i = j - 1;
int temp = arrayIn[j];
while (i >= 0 && arrayIn[i] < arrayIn[j] /* Aj < Ai */) {
arrayIn[i+1] = arrayIn[i];
i--;
}
arrayIn[i+1] = temp;
}
for(int p = 0; p < 5; p++){
printf("array[%d]: %d \n", p, arrayIn[p]);
}
return(0);
}
这是我得到的输出:
插入排序前:
array[0]: 1
array[1]: 2
array[2]: 3
array[3]: 4
array[4]: 5
插入排序后:
array[0]: 2
array[1]: 3
array[2]: 4
array[3]: 1
array[4]: 5
是的,我只是意识到自己。但是,我的输出仍然不太正确... – marcello
您还必须调整外循环以从[[1:5]':'for(int j = 1; j <5 - 1; j ++)'运行。 –
@MOehm你是对的谢谢! –