當前位置:首頁 » 編程語言 » 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 }