我们可以写标记[j] =标记[i]吗?内部while循环而不是mark [i + 1] = marks [i];

时间:2018-10-17 14:08:04

标签: insertion-sort

C ++中的插入排序程序

#include"iostream"
using namespace std;
int main(){
int i,temp;
int marks[5]={12,11,13,5,6};
//this loop go through all element
//(staring from 2 to 5,
//assuming that first element is already sorted)

for(int j=1;j<5;j++){
    i=j-1;
    temp=marks[j];

    while(i>=0 && marks[i]>temp){
        marks[i+1]=marks[i];
        i--;
    }
    marks[i+1]=temp;
}

//prints all the elements..
for(int z=0;z<5;z++){
    cout<<marks[z]<<" ";
}
return 0;

}

我们可以写标记[j] =标记[i]吗?内部while循环而不是mark [i + 1] = marks [i];

如果没有,为什么?

1 个答案:

答案 0 :(得分:0)

所以答案是否定的-不一样

以j = 2为例,while循环从i = 1开始

第一次迭代,marks [i + 1] = marks [i],i + 1与j相同,但随后i--,因此在while循环结束时,i最终为0。 >

对于while循环中的第二次迭代,marks [i + 1] = marks [i],i + 1与j不同。