以下程序是折半插入排序的算法
设待排序的记录序列存放在a[1],…a[n]中,以a[0]作为辅助工作单元,程序是要把a[i] 插入到已经有序的序列a[1],…a[i-1]中。<p style="margin-left: 30px;">void binsort (NODE a[ ],int n)<p style="margin-left: 30px;">{ int x,i,j,s,k,m;<p style="margin-left: 30px;">for (i=2;i<=__(1)__;i++)<p style="margin-left: 30px;">{ a[0]=a[i];<p style="margin-left: 30px;">x= a[i].key;<p style="margin-left: 30px;">s=1;<p style="margin-left: 30px;">j=i-1;<p style="margin-left: 30px;">while (s<=j)<p style="margin-left: 30px;">{ m=__(2)__<p style="margin-left: 30px;">if( x<a[m].key)<p style="margin-left: 30px;"> __(3)__<p style="margin-left: 30px;">else<p style="margin-left: 30px;"> __(4)__<p style="margin-left: 30px;">}<p style="margin-left: 30px;">for ( k=i-1;k>=j+1;k- -)<p style="margin-left: 30px;"> __(5)__=a[k];<p style="margin-left: 30px;">a[j+1]=a[0];<p style="margin-left: 30px;">}<p style="margin-left: 30px;">}选项1(matching)
.n
出自:2024年国家开放大学答案