问题 填空题

插入排序算法的主要思想是:每次从未排序序列中取出一个数据,插入到己排序序列中的正确位置。InsertSort类的成员函数sort()实现了插入排序算法。请将画线处缺失的部分补充完整。 class InsertSort{ public: InsertSort(int* a0,int n0):a(a0),n(n0){}//参数a0是某数组首地址,n是数组元素个数 void sort() {//此函数假设已排序序列初始化状态只包含a[0],未排序序列初始为a[1]…a[n-1] for(int i=1;i<n;++i){int t=a[i]; int j; for( 【14】 ;j>0;--j){if(t>=a[j-1])break; a[j]=a[j-1];} a[j]==t;}} protected: int*a,n;//指针a用于存放数组首地址,n用于存放数组元素个数 };

答案

参考答案:j=i

解析: 本题考查的是插入排序算法。在sort()函数中是一个两重循环,外循环从1循环递增到n-1,即遍历未排序序列a[1]…a[n-1],取未排序序列中的第1个元素a[i] (i初值等于1)与已排序序列中的最后一个元素a[i-1]开始从后往前进行比较。内循环从后往前遍历已排序序列,使循环变量j的初值为i,则a[j-1]是已排序序列的最后一个元素。所以应该填j=i

单项选择题
多项选择题