【正确答案】正确答案:直接插入排序的基本思想:依次将记录序列中的每一个记录插入到有序段中,使有序段的长度不断地扩大。其具体的排序过程可以描述如下:首先将待排序记录序列中的第一个记录作为一个有序段,将记录序列中的第二个记录插入到上述有序段中形成由两个记录组成的有序段,再将记录序列中的第三个记录插入到这个有序段中,形成由三个记录组成的有序段,……依此类推,每一趟都是将一个记录插入到前面的有序段中,假设当前欲处理第i个记录,则应该将这个记录插入到由前i一1个记录组成的有序段中,从而形成一个由i个记录组成的按关键字值排列的有序序列,直到所有记录都插入到有序段中。一共需要经过n一1趟就可以将初始序列的n个记录重新排列成按关键字值大小排列的有序序列。算法为: void insertSort(DataType a,int n) for(i=2;i<=n;i++)//需要n一1趟 { a[0]=a[i];//将a[i]赋予监视哨 j=i一1; while(a[0].key<a[j].key)//搜索插入位置 {a[j+1]=a[j]; j=j一1; a[j+1]=a[0];//将原a[i]中的记录放入第j+1个位置 } }
【答案解析】