每周学习日志(七)
编写一个函数,利用折半查找算法在一个有序表中插入一个元素,并保持表的有序性。
例如,在一个有序表{1,3,5,7,9}中,查找元素5,因为元素存在,则有序表不变;若查找元素6,则该有序表成为{1,3,5,6,7,9}。
头文件
#include <stdio.h>
过程函数BinSrch
int BinSrch(int a[], int n, int k)
{
int low,high,mid;
low=1;
high=n;
while(low<=high)
{
mid=(low+high)/2;
if(k==a[mid])
{
printf("it has already been in the a\n");
return 0;
}
else if(k<a[mid])
high=mid-1;
else
low=mid+1;
}//不存在 执行下面程序 说明已找到插入点
for(int i=n;i>=low;i--)//后移
a[i+1]=a[i];
a[low]=k;//插入
return 1;
}
主函数main
void main()
{
int a[7]={0,1,3,5,7,9};
int r=BinSrch(a,5,6);
int i;
if(r=0)
for(i=1;i<=5;i++)
printf("%d",a[i]);
else
for(i=1;i<=6;i++)
printf("%d",a[i]);
printf("\n");
}