插入排序问题
void sort(int* a, int n){
for(int i=1; i<n; ++i){
int t = a[i];//要插入的元素
int j = i;//要插入的位置
for( ; j>0&&a[j-1]>t; --j){
a[j] = a[j-1];
}
a[j] = t;
cout << "第" << i << "次:";
print(a, 10);
}
}
求分析?
[解决办法]
插入排序可把数组分成两部分:已排和未排。初始状态已排为a[0],其他的都是待排。循环从a[1]开始,先保存要插的值,然后从当前位置向前查找,如果前一个数大于后一个数,就将前一个数后移一位,否则就插到当前位置。由于用手机,打字母比较麻烦,你看着理解一下吧,不难的,可以举个例子,最直接的方法就是手动模拟整个过程,在纸上写下来,就能看出来了