帮我解释下 算法描述的 写法 怎么就是正确的 怎么就是错的啊?!
本来我想看到他第一个空 按我理解 是low=1 结果答案 是low<-1 后边他又写了一个 high<-i-1 而我 觉得是high=i-1 谁能帮忙解释下
[说明]为了减少直接插入排序关键字的比较次数,本算法使用了二分(折半)插入法对一个无序数组R[1, ..., n]进行排序。排序思想是对一个待插入元素,先通过二分法(折半)找到插入位置,后移元素后将该元素插入到恰当位置。(假设R[]中元素互不相同)
[算法]
1、变量声明
X: Data Type
i, j, low, high, mid, r:0...n
2、每循环一次插入一个R[i}
循环:i以1为步长,从2到n,反复执行
(1)准备
X <- R[i];___(1)___;high <- i-1;
(2)找插入位置
循环:当___(2)___时,反复执行
___(3)___
若X.key < R[mid].key
则high <- mid-1;
否则___(4)___
(3)后移
循环:j以-1为步长,从___(5)___,反复执行
R[j+1] <- R[j]
(4)插入
R[low] <- X
3、算法结束
标准答案是:(1)low <- 1
(2)low <= high
(3)mid <- int((low+high)/2)
(4)low <- mid+1
(5)i-1到low