每周学习日志(七)

编写一个函数,利用折半查找算法在一个有序表中插入一个元素,并保持表的有序性。

例如,在一个有序表{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");
}
posted @ 2020-06-09 16:40  宫下幸子  阅读(135)  评论(0编辑  收藏  举报