您现在的位置是:首页 >

数列集合 编写查找函数D(),给定任意有序数列,然后输入任意一数,用折半查找法找出该数在数列中所在的位置。

火烧 2022-09-23 04:14:58 1074
编写查找函数D ,给定任意有序数列,然后输入任意一数,用折半查找法找出该数在数列中所在的位置。 编写查找函数D ,给定任意有序数列,然后输入任意一数,用折半查找法找出该数在数列中所在的位置。提供一份C

编写查找函数D(),给定任意有序数列,然后输入任意一数,用折半查找法找出该数在数列中所在的位置。  

数列集合 编写查找函数D(),给定任意有序数列,然后输入任意一数,用折半查找法找出该数在数列中所在的位置。

编写查找函数D(),给定任意有序数列,然后输入任意一数,用折半查找法找出该数在数列中所在的位置。

提供一份C语言的代码供参考:

#include<stdio.h>#include <stdlib.h>int BinarySearch(int A[], int X, int N){ int Low, Mid, High; Low = 0; High = N - 1; while(Low <= High) { Mid = (Low + High) / 2; if(A[Mid] < X) Low = Mid + 1; else if(A[Mid] > X) High = Mid - 1; else return Mid; } return -1;}int main(){ int number[8]={12,15,24,45,51,78,84,95}; int size = sizeof(number)/sizeof(int); int a; scanf("%d",&a); int result = BinarySearch(number,a,size); printf("%d ",result); printf("n"); system("pause"); return 0;}

输出的位置信息是从0开始,希望能帮到你。

C语言程序编写:在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,否则输出no found;

#include<stdio.h>
#define N 10
void main()
{
int a[N];
int num,i;
char ch='n';
printf("请输入一个数组:n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
printf("输出数组:n");
for(i=0;i<N;i++)
printf("%d",a[i]);
printf("n");
printf("请输入一个数n");
scanf("%d",&num);
printf("开始查找n");
for(i=0;i<N;i++)
if(num==a[i])
{
ch='y';
printf("%d 在数组的第 %d 位n",num,i+1);
}
if(ch=='n')
printf("no foundn");
}

要求输入一个整数,用折半查找法找出该数,若存在,在主函数中输出其所处的位置

#include<stdio.h>
void main()
{
int =0,bot=14;
int c[15]={14,13,12,11,10,9,8,7,6,5,4,3,2,1,0},x;
printf("请输入一个数:");
scanf("%d",&x);
while(!=bot&&x!=c[(bot+)/2])
{
if(c[(bot+)/2]<x) bot=(+bot)/2-1;
else =(bot+)/2+1;
}
if(<=bot&&x==c[(bot+)/2]) printf("%d是数组的第%d个元素n",x,(bot+)/2+1);
else printf("查无此数n");
}

C语言编程:输入一数列,再从输入一个数 查找出该数字在数列中出现的次数

#include <stdio.h>int main()
{
int n;
int a[100];
int b;
int i;
int t = 0;
printf("输入数列中数的个数:");
scanf("%d", &n);
printf("输入数列中的数:n");
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
printf("输入要查询的数字:");
scanf("%d", &b);
for(i = 0; i < n; i++)
{
if(a[i] == b)
t++;
}
printf("%d出现%d次n", b, t);
}

用C++编程已有一按从小到大的次序排序好的数组,现输入一数,要求用折半查找法找出该数在数组中的位置。

#include <iostream>
using namespace std;
int search(int a[],int n, int x)
{
int low, mid, high;
low = 0, high = n-1;

while (low <= high)
{
mid = (low+high)/2;
if (x > a[mid])
low = mid+1;
else if (x < a[mid])
high = mid-1;
else
return mid;
}
return -1;
}
int main()
{
int a[100];
int n, x;
cin >> n;数组大小
for (int i = 0; i < n; i++)
cin >> a[i];
cin >> x;要查的数据
int l = search(a, n, x);
if (l == -1)
cout << "no such data!"<< endl;
else
cout << "the data location is :" << l <<endl;
return 0;
}

编写一个函数,在一数列中查找某个数x的位置,找到返回位置,找不到返回-1

int locate(int a[],int n,int x)
{
int i;
for(i=0;i<n;i++)
if(a[i]==x)
return i;
return -1;
}

编写利用折半查找法从整型数组中检索指定数值的函数,若找到则返回该数值在数组中的位置。(见补充)

#include <stdio.h>int Find(int a[], int n, int num) {int low = 0,mid,high = n - 1;while(low <= high) {mid = (low + high)/2;if(a[mid] == num) return mid;if(a[mid] > num) high = mid - 1;else low = mid + 1;}return -1;}int main() {int a[] = {1,2,4,5,6,7,8,9,10,12,13,25,36,47,58,69};int res,n = sizeof(a)/sizeof(a[0]);res = Find(a,n,10);if(res >= 0) printf("找到了%d在数组中的索引是%d。n",10,res);else printf("对不起,没有找到数值是%d的元素。n");return 0;}

从键盘任意输入10个不同的整数,利用顺序查找法,查找相应数据并输出该数据的数组中的位置

void main()
{
int c[10],a,i;
for(i=0;i<10;i++)
{
printf("Input i Num:n",i);
scanf("%d",&c[i]);
}
printf("Input the num:n");
scanf("%d",&a);
for(i=0;i<10;i++)
if(c[i]==a) break;
if(i>=10) printf("Not find!n");
else printf("The %d Num is:%dn",i,c[i]);
}

C语言中怎样利用折半查找法(二分查找法)找到数列中的一个数?

根据需求,用二分法查找指定数组中的指定数字,代码如下:
#include <stdio.h>
在长度为len的数组a中寻找n,找到就返回数组下标,没找到就返回-1
int search(int a[], int len, int n)
{
int index = -1;
int left = 0, right = len, mid = (left + right) / 2;

while (left <= right)
{
if (n == a[mid])
{
index = mid;
break;
}
elseif (n > a[mid])
{
left = mid + 1;
mid = (left + right) / 2;
}
else
{
right = mid - 1;
mid = (left + right) / 2;
}
}

return index;
}
int main()
{
int array[] = {5, 8, 13, 17, 23, 25, 29, 50, 53}; 数组
int length = 9; 数组长度
int aim = 17; 查找目标

输出查找结果, Search 17 in array[]: 3
printf("Search %d in array[]: %dn", aim, search(array, length, aim));

return0;
}

有一数组中的数为67,45,43,35,32,30,28,25,24,10,要求用折半查找的方法找出数组中24所在的位置

#include<iostream>using namespace std;int halfsearch(int a[],int k){ int low,mid,high,key; int length = 10; low = 0; high = length-1; mid = (low+high)/2; while(low <=high) { if(low<=high && a[mid] < k) { low = mid + 1; mid = (low+high)/2; } if(low<=high && a[mid] > k) { high = mid - 1; mid = (low+high)/2; } if(a[mid] == k) { cout<<"查找成功,是第"<<mid+1<<"个数"<<endl; return mid ; } } cout<<"没有查找到这个数"<<endl; return 0;} int main() { int a[10]={10,24,25,28,30,32,35,43,45,67}; int length =10; halfsearch(a,24); return 0; }。。。。增序的,你参考下吧。。

  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码