C语言查找的用法

Python014

C语言查找的用法,第1张

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define N 20

void Sort(int a[],int n)  {

int i,j,k,t

for(i = 0 i < n - 1 ++i) {

k = i

for(j = i + 1 j < n ++j) {

if(a[k] > a[j]) k = j

}

if(i != k) {

t = a[k]

a[k] = a[i]

a[i] = t

}

}

}

int Find(int a[],int n,int x) {

int low = 0,high = n - 1,mid

while(low <= high) {

mid = (low + high)/2

if(x == a[mid]) return mid

else if(x > a[mid]) low = mid + 1

else high = mid - 1

}

    return -1

}

void Show(int a[],int n) {

int i

for(i = 0 i < n ++i) {

printf("%d ",a[i])

}

printf("\n")

}

int main() {

    int a[20],i,x,res

    srand((unsigned)time(NULL))

    for(i = 0 i < N ++i) 

     a[i] = rand()%N // 每个数都在1 -- 100之间 

    Show(a,N)

Sort(a,N)

Show(a,N)

x = rand()%100 + 1

res = Find(a,N,x)

if(res >= 0) printf("数值%d的下标为%d。\n",a[res],res)

else printf("数列中没有找到数值%d。\n",x)

    return 0

}

查找的意义是在一堆数据中,使用方法找到你想要找的数据。

一般为分:顺序和折半(又叫二分)查找两种方法。

存放在数组中的数据就可以看成一堆数据,在有限数组内存放一些数据,通过使用查找方法进行查找想要找的数。

顺序方法:这种查找方法不需要数组排序,数据可以是无序的。从数组开头向后一个一个与被查找数进行比较,如果找到就做相应的操作(如输出这个数的下标或位置)等。

折半查找法:(二分查找)

前提需要把数组里的数据进行排序(升序或降序)。思路是(假设数组已按升序排序)每次只比较中间的数据(一段距离内),第一次先和中间的数组(下标是这个数组中在中间的)比较,如果相同,则说明被找数已找到。否则就要判断是在大于还是小于:如果是大于,那么就将在中间+1至最后一个数之间的中间数再进行比较。否则就将在第一个至中间-1的数进行比较;再次重复比较,直到找到数为止。

#include<stdio.h>

int main()

{

int i,res,a[10]={1,4,7,10,13,16,19,22,25,28}

printf("请输入要查找的数:")

scanf("%d",&res)

for(i=0i<10i++)

if(a[i]==res)

break

if(i>=10)

printf("没有要查找元素\n")

else if(i<10)

printf("%d在数组中的位置为:%d,即第%d个数\n",res,i,i+1)

return 0

}

代码时正确的。。。