有十个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几

如题所述

第1个回答  2021-02-17
#include <stdio.h>
int main()
{
int i,a[10],low=0,high=9,x,n;//用二分法查找数首先数组是已经排好序的
printf("请输入需要查找的数:\n");
scanf("%d",&n);
printf("请输入数组中的十个元素:\n");
for(i=0;i<10;i++) scanf("%d",&a[i]);
while(low<high)
{
x=(low+high)/2;
if(a[x]<n) low=x+1;
else if(a[x]>n) high=x-1;
else break;
}
if(low<high) printf("%d在数组中的第%d个数\n",n,x+1);
else printf("数组中无此数\n");
return 0;
}
试试看我这代码,仅供参考

有十个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是...
int main(){ int i,a[10],low=0,high=9,x,n;\/\/用二分法查找数首先数组是已经排好序的 printf("请输入需要查找的数:\\n");scanf("%d",&n);printf("请输入数组中的十个元素:\\n");for(i=0;i<10;i++) scanf("%d",&a[i]);while(low<high){ x=(low+high)\/2;if(a[x]<n...

有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是...
int main(void) { int ary[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};int num = 16;int pos;int low;int high;int mid;low = 1;high = 15;pos = 0;while(high>=low){ mid = (low + high)\/2;if(ary[mid-1]>num){ high = mid-1;}else if(ary[m...

已有10个已排好序的数,存放在一维数组中。任意输入一个数,用折半查
return -1;}int main(void){ int m[10]={1,5,8,23,45,81,99,101,133,144},k,t; printf("Input k(int)...\\n"); scanf("%d",&k); if((t=halfsearch(m,10,

...再输入一个数,要求用折半查找法找出该数是数组
include <stdio.h>#define N 10typedef int datatype;void Sort(datatype a[],int n) {int i,j,k;int num;for(i = 0; i < n - 1; ++i) {k = i;for(j = i + 1; j < n; ++j)if(a[k] < a[j]) k = j;if(k != i) {num = a[k];a[k] = a[i];a[i...

...10个数由大到小顺序存放在一个数组中,输入一个数,
\/*输入要查找的数*\/left=0;right=9; \/*分别使left,right等于0和数组长度-1*\/while(left<=right){mid=(left+right)\/2; \/*mid取每次left和right的中间值*\/if(n>a[mid])right=mid-1; \/*让输入的数字与中间值对比,如果大于中间值,则最右端变为中间值前一位的数*\/else if(n...

C语言折半查找法详细代码(假如有10个已排好序的数)
折半查找即二分查找,思想是:在一组有序的数据中查找一个数据,首先将要查找的数据与这组数中间的值比较,如果要查找的数据比它小,则在左半部分中继续查找;若比中间值大,则在右半部分中继续查找,相等的话就表示已找到,直接返回。这样,每次查找都可以将查找范围缩小一半,以此达到O(log N)的...

折半查找法
1、折半查找法的前提是数据已经排序。如果数据没有排序,该算法将不会正常工作。折半查找法的步骤如下:找到数组的中间元素;如果中间元素正好是目标值,则查找成功;如果目标值大于中间元素,则在数组右半部分继续查找。2、如果目标值小于中间元素,则在数组左半部分继续查找;如果数组为空或未找到目标值...

c语言的折中查找法的算法
折半查找法是一种高效的查找算法,它将查找范围逐步缩小至目标值所在的区间,直到找到目标值或确定目标值不存在。折半查找基于有序数组,通过比较目标值与数组中间元素来决定下一次查找的区间。为了使用折半查找,需要先对数组进行排序。本文以C语言实现折半查找法为例,介绍了如何在1至20个整数中进行查找...

...的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数...
比如给一个4的数,程序第一步从数组中取出排在中间数的数(i=7),即第8个数89.用89和4比较。如果大于89就往后循环查找,即查找89后的{144,233,377,570,671,703,812},如果小于89就往前查找,即查找89前的]{1,4,9,13,21,34,55},不管往前还是往后最大循环次数都是7,所以while循环结束条件是(fabs(i-7)...

...然后随机输入一个数,用折半查找法在数组中查找,如在数组中
cout<<"输入一个想找的数";cin>>num;int low=0;int hight=14;int mid;while(low<=hight){ mid=(low+hight)\/2;if(num==s[mid]){ cout<<"找到了位于"<< "s["<<mid<<"]";return 0;} else if(num>s[mid]){ low=mid+1;} else if(num<s[mid]){ hight=mid-1;} } cout...

相似回答
大家正在搜