不同的具体实现方法导致不同的算法描述直接插入排序(基于顺序查找)折半插入排序基于折半查找)表插入排序(基于链表存储)希尔排序(基于逐缩小增量)
直接插入排序(基于顺序查找) 表插入排序(基于链表存储) 不同的具体实现方法导致不同的算法描述 折半插入排序(基于折半查找) 希尔排序(基于逐趟缩小增量)
一、直接插入排序利用实现“顺序查找”实“在R[1.i-1]中查找R[i]的插入位置'算法的实现要点:
一、直接插入排序 利用 “顺序查找”实现 “在R[1.i-1]中查找R[i]的插入位置” 算法的实现要点:
从R[i-1]起向前进行顺序查找,监视哨设置在R[O];R[0]R[i]插入位置//设置“哨兵”R[O] = R[i];for (i-i-1; R[O].key<R[i].key; --j);//从后往前找循环结束表明R[i的插入位置为i+1
从R[i-1]起向前进行顺序查找, 监视哨设置在R[0]; R[0] = R[i]; // 设置“哨兵” 循环结束表明R[i]的插入位置为 j +1 R[0] j R[i] for (j=i-1; R[0].key<R[j].key; -j); // 从后往前找 插入位置 j=i-1
对于在香找过程中找到的那些关键字不小于R[i].key的记录,并在查找的同时实现记录向后移动;for (i-i-l; R[o].key<R[i].key; --j)R[i+1] = R[i]R[0]R[i]插入位置"插入"上述循环结束后可以直接进行
对于在查找过程中找到的那些关键 字不小于R[i].key的记录,并在查找的 同时实现记录向后移动; for (j=i-1; R[0].key<R[j].key; -j); R[j+1] = R[j] R[0] j R[i] j= i-1 上述循环结束后可以直接进行“插入” 插入位置
今i=23..,n实现整个序列的排序for(i=2; i<=n; ++i)if (R[il].key<R[i-1].key)在 R[1..i-1]中查找R[i的插入位置插入R[i] ;
令 i = 2,3,., n, 实现整个序列的排序。 for ( i=2; i<=n; ++i ) if (R[i].key<R[i-1].key) { 在 R[1.i-1]中查找R[i]的插入位置; 插入R[i] ; }