当前位置:首页 » 编程语言 » c语言查找算法代码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言查找算法代码

发布时间: 2022-11-20 09:08:03

㈠ 用c语言怎样写一个通讯录管理程序中查找功能的算法,代码如下:

自己做啊,当你绞尽脑汁都做不出来时,再问其他人吧。不然很难进步的

㈡ c语言二分查找算法 (代码运行输入数组数据时就出错,应该怎么修改啊)

#include <stdio.h>
#define N 100

int binarySearch(int a[], int n, int key)
{
int low = 0,mid;
int high = n - 1;
while(low <= high)
{
mid = (low+high)/2;
if(key == a[mid])
return mid; //找到待查元素
else if(key < a[mid])
high = mid - 1; //继续在前半区间进行查找
else
low = mid + 1; //继续在后半区间进行查找
}
return -1;
}

void show(int a[], int n){
int i = 0;
for(; i<n; i++){
printf("%d\t ", a[i]);
}
}

int main()
{
int a[N], n, key, i, r;
printf("请输入你需要的数组长度n:\n");
scanf("%d",&n);
printf("请按从小到大的顺序输入一组数:\n");
for(i=1; i<=n; i++)
scanf("%d", &a[i-1]);

show(a, n);

printf("\n请输人所要查找的元素key:\n");
scanf("%d",&key);
r= binarySearch(a,n,key);
if(-1 == r)
printf("查找失败 \n");
else
printf("查找成功 \n");
printf("你要找的数的下标为%d\n",r);
return 0;
}

㈢ c语言顺序查找法

如果是在已有n个元素的数组a中顺序查找值为x的元素,以下是实现查找的函数代码,查找成功则返回此元素的位置,否则返回-1:
int find(int a[],int n,int x)
{int i;
for(i=0;i<n&&a[i]!=x;i++);
return i<n?i:-1;
}

㈣ 诚求用C语言编一个实现常见查找算法。

折半查找,数组存放的是从31到3的奇数,按从大到小的顺序放入
#include <stdio.h>
void main()
{
int array[15];
int i,number;
int top,end,half,temp;
top = 0;
end = 15;
temp = 0;
half = (top + end) / 2;
for(i = 0;i < 15;i++)
array[i] = 2 * (15 - i) + 1;
printf("please input the number:\n");
scanf("%d",&number);
if(number > array[0] || number < array[14])
printf("the array hasn't the number!\n");
else
{
while(top != end)
{
if(array[half] > number)
top = half;
else if(array[half] < number)
end = half;
else
{
printf("the number is the %d number of array!\n",half + 1);
break;
}
temp = half;
half = (top + end) / 2; //折半查询
if(temp == half)
{
printf("the array hasn't the number!\n");
break;
}
}
}
}

㈤ 怎样写二分查找算法的程序(用C语言实现)

我用一个子函数实现的,主函数你自己写,对你又好处,需要传入一个数组和数组长度n以及要查找的数,如果查找成功,返回x在数组中的位置,否则返回-1
int search(int *a,int x)
{ int low=0,high=n-1,mid,flag=-1;
while(low<=high)
{ mid=(low+high)/2;
if(a[mid]==x) return mid;
else if(a[mid]>low) low=mid+1;
else high=mid-1;
}
return flag;
}

㈥ C语言编写数据结构查找算法

实验五 查找的实现
一、 实验目的
1.通过实验掌握查找的基本概念;
2.掌握顺序查找算法与实现;
3.掌握折半查找算法与实现。
二、 实验要求
1. 认真阅读和掌握本实验的参考程序。
2. 保存程序的运行结果,并结合程序进行分析。
三、 实验内容
1、建立一个线性表,对表中数据元素存放的先后次序没有任何要求。输入待查数据元素的关键字进行查找。为了简化算法,数据元素只含一个整型关键字字段,数据元素的其余数据部分忽略不考虑。建议采用前哨的作用,以提高查找效率。
2、查找表的存储结构为有序表,输入待查数据元素的关键字利用折半查找方法进行查找。此程序中要求对整型量关键字数据的输入按从小到大排序输入。
一、顺序查找
顺序查找代码:
#include"stdio.h"
#include"stdlib.h"
typedef struct node{
intkey;
}keynode;
typedef struct Node{
keynoder[50];
intlength;
}list,*sqlist;
int Createsqlist(sqlist s)
{
inti;
printf("请输入您要输入的数据的个数:\n");
scanf("%d",&(s->length));
printf("请输入您想输入的%d个数据;\n\n",s->length);
for(i=0;i<s->length;i++)
scanf("%d",&(s->r[i].key));
printf("\n");
printf("您所输入的数据为:\n\n");
for(i=0;i<s->length;i++)
printf("%-5d",s->r[i].key);
printf("\n\n");
return1;
}
int searchsqlist(sqlist s,int k)
{
inti=0;
s->r[s->length].key=k;
while(s->r[i].key!=k)
{

i++;
}
if(i==s->length)
{
printf("该表中没有您要查找的数据!\n");
return-1;
}
else
returni+1;
}
sqlist Initlist(void)
{
sqlistp;
p=(sqlist)malloc(sizeof(list));
if(p)
returnp;
else
returnNULL;
}
main()
{
intkeyplace,keynum;//
sqlistT;//
T=Initlist();
Createsqlist(T);
printf("请输入您想要查找的数据的关键字:\n\n");
scanf("%d",&keynum);
printf("\n");
keyplace=searchsqlist(T,keynum);
printf("您要查找的数据的位置为:\n\n%d\n\n",keyplace);
return2;
}
顺序查找的运行结果:
二、折半查找
折半查找代码:
#include"stdio.h"
#include"stdlib.h"
typedef struct node{
intkey;
}keynode;
typedef struct Node{
keynoder[50];
intlength;
}list,*sqlist;
int Createsqlist(sqlist s)
{
inti;
printf("请输入您要输入的数据的个数:\n");
scanf("%d",&(s->length));
printf("请由大到小输入%d个您想输入的个数据;\n\n",s->length);
for(i=0;i<s->length;i++)
scanf("%d",&(s->r[i].key));
printf("\n");
printf("您所输入的数据为:\n\n");
for(i=0;i<s->length;i++)
printf("%-5d",s->r[i].key);
printf("\n\n");
return1;
}
int searchsqlist(sqlist s,int k)
{
intlow,mid,high;
low=0;
high=s->length-1;
while(low<=high)
{
mid=(low+high)/2;
if(s->r[mid].key==k)
returnmid+1;
elseif(s->r[mid].key>k)
high=mid-1;
else
low=mid+1;
}
printf("该表中没有您要查找的数据!\n");
return-1;
}
sqlist Initlist(void)
{
sqlistp;
p=(sqlist)malloc(sizeof(list));
if(p)
returnp;
else
returnNULL;
}
main()
{
intkeyplace,keynum;//
sqlistT;//
T=Initlist();
Createsqlist(T);
printf("请输入您想要查找的数据的关键字:\n\n");
scanf("%d",&keynum);
printf("\n");
keyplace=searchsqlist(T,keynum);
printf("您要查找的数据的位置为:\n\n%d\n\n",keyplace);
return2;
}
折半查找运行结果:
三、实验总结:
该实验使用了两种查找数据的方法(顺序查找和折半查找),这两种方法的不同之处在于查找方式和过程不同,线性表的创建完全相同,程序较短,结果也一目了然。

㈦ C语言 查找算法实现

#include

int main() {
int i,x,n,*result = NULL;
int a[10],low,high,mid;

scanf_s("%d",&n);
// 确保输入的数据是非递减的
for(i = 0 ; i < n && i < 10 ; i++) {
scanf_s("%d",&a[i]);
}

fflush(stdin); // 如果输入的数组元素多于10个,则废弃
scanf_s("%d",&x);

low = 0,high = n - 1;
while(low <= high) {
mid = (low + high) / 2;
if(x == a[mid]) {
result = &a[mid]; // 这里给出的是查找到该元素的指针
break;
}
else if(x < a[mid]) {
high = mid - 1;
}
else {
low = mid + 1;
}
}
if(result != NULL) {
printf("%d\n",*result);
}
else {
printf("no result\n");
}
return 0;
}

㈧ C语言程序,写出一个查找给定值为k的节点的算法

#include
#define
NULL
0
typedef
struct
node
{
int
key;
struct
node
*next;
}Node;
Node
first;
int
main()
{
char
c='a';
int
k,i,sum=0,flag=0;
Node
*p;
p=&first;
printf("请输入
链表
元素(元素之间用空格间隔):\n");
while(c!='\n')
{
scanf("%d",&p->key);
p->next=new
Node;
p=p->next;
sum++;
c=getchar();
}
p->next==NULL;
printf("请输入要查找的key值:");
scanf("%d",&k);
p=&first;
printf("查找符合的节点序数为:
");
for(i=0;i
key==k)
{
printf("%d
",i+1);
flag=1;
}
p=p->next;
}
if(flag==0)
printf("无\n查找失败!\n");
}

㈨ 如何用C语言顺序查找程序

#include<stdio.h>
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int i,x,y;
printf("输入你要查找的数:\n");
scanf("%d",&x);
y=0; //标记是否已找到,y=1表是找到了,y=0表示没找到
for(i=0;i<10;i++) //循环,把x和数组中的元素一个个比较
{
if(x==a[i]) //如果x=a[i]说明已经找到
{
y=1; //把y变成1,说明已经找到了
printf("你要查找的数%d在第个%d位置\n",x,i+1); //输出找到的相关信息
break; //跳出循环
}
}
if(y==0)printf("无法找到你要查找的数\n"); //y=0表示找不到
}

㈩ c语言排序和查找

1)利用readData()函数从data1.txt中读入不同规模的数据存入数组,
编写基于数组的顺序查找算法,测试数据量为1万、5万、10万、20万、
30万、40万和50万时的数据查询时间。
算法代码如下:

1 int seqsearch(int a[],int n,int key)
2 {
3 int k=n-1;
4 while(k>=0&&a[k]!=key)
5 k--;
6 return (k);
7 }

2)利用readData()函数从data2.txt中读入不同规模的有序数据存入数组,
编写基于数组的二分查找算法,测试数据量为1万、5万、10万、20万、30万、
40万和50万时的数据查询时间。
算法代码如下:

1 int binSearch(int a[],int n,int key)
2 {
3 int low=0;
4 int high=n-1;
5 int mid;
6 while(low<=high)
7 {
8 mid=(low+high)/2;
9 if(a[mid]==key) return mid;
10 if(a[mid]>key)
11 high=mid-1;
12 else
13 low=mid+1;
14 }
15 return -1;
16 }

3)请设计冒泡排序算法函数void bubbleSort(int a[],int n),对a[1]..a[n]进行升序排序。
并测试在不同数据规模下的排序效率。
算法代码如下:


1 void bubbleSort(int a[],int n)
2 {
3 int i=1,j,flag=1;
4 while(i<=n-1&&flag)
5 {
6 flag=0;
7 for(j=1;j<=n-1-i;j++)
8 if(a[j+1]<a[j])
9 {
10 a[0]=a[j];
11 a[j]=a[j+1];
12 a[j+1]=a[0];
13 flag=1;
14 }
15 i++;
16 }
17 }