函数实现对10个排好序的元素进行折半法查找
题目是:写两个自定义函数,第一个函数实现对10个元素进行从大到小的排序;第二个函数实现对10个排好序的元素进行折半法查找,如果找到了返回对应的元素下标值,否则返回0。编写相应的主函数测试。
两个自定义函数的原型分别为:
void sort(int a[], int n);
int find(int a[], int n, int x);
但是我只会写排序的代码:
#include<stdio.h>
void sort(int a[],int n)
{
int i,j;
for(i=1;i<n;i++)
{
for(j=0;j<n-i;j++)
{
if(a[j]<a[j+1])
{
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
int main()
{
int a[10]={11,12,13,14,15,16,17,18,19,20};
sort(a,10);
int i;
for(i=0;i<10;i++)
{
printf("%d\n",a[i]);
}
return 0;
}
请求哪位大神帮我在我写的代码中加入函数实现对10个排好序的元素进行折半法查找,如果找到了返回对应的元素下标值,否则返回0。
这张图是我在教材上找到的折半法,但是不知道怎么写进这个程序,求大神帮我就按这种写进去:

两个自定义函数的原型分别为:
void sort(int a[], int n);
int find(int a[], int n, int x);
但是我只会写排序的代码:
#include<stdio.h>
void sort(int a[],int n)
{
int i,j;
for(i=1;i<n;i++)
{
for(j=0;j<n-i;j++)
{
if(a[j]<a[j+1])
{
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
int main()
{
int a[10]={11,12,13,14,15,16,17,18,19,20};
sort(a,10);
int i;
for(i=0;i<10;i++)
{
printf("%d\n",a[i]);
}
return 0;
}
请求哪位大神帮我在我写的代码中加入函数实现对10个排好序的元素进行折半法查找,如果找到了返回对应的元素下标值,否则返回0。
这张图是我在教材上找到的折半法,但是不知道怎么写进这个程序,求大神帮我就按这种写进去:

...全文
相关推荐
java中折半法查找方法
在数组中用java折半法查找指定的数字,提供了2个方法,一个是递归另一个不是递归方法,好东西大家分享。。。
java排序 折半法
很好的排序例子。非常易懂,特别适合初学者。
顺序查找和折半查找(C语言)
C语言链表实现对链表的两种查找方法: 顺序查找和折半查找
C语言实现折半查找法(二分法)
折半查找法也叫做二分查找,顾名思义,就是把数据分成两半,再判断所查找的key在哪一半中,再重复上述步骤知道找到目标key; 注意:折半查找法仅适用于对已有顺序的数组、数据进行操作!!! 很显然,折半查找法相对于其他查找方法例如顺序查找法效率要高很多; 下面我们来实际操作一下,了解二分查找的奥义。 例如:要在数组arr[]={8,7,9,6,4,1,2,5,3,10,11};中查找key=7的位置;首先,我们要先将数组arr中的数据成员进行排序。arr[]={1,2,3,4,5,6,7,8,9,10,11}; 如图所示:将该组数据小端记作low,大端记作high,中间值记作mid; 二分法查找
折半查找 c语言函数
折半查找c语言函数, 在数组总查找 例子


