- 论坛徽章:
- 0
|
2:用二分法在一个数组中查找你所需元素- #include <stdio.h>
- #include <time.h>
- #include <stdlib.h>
- int init(int a[],int n)
- {
- int i;
- srand(time(NULL));
- for(i=0;i<n;i++)
- a[i]=rand()%100+1;
- }
- void print(int a[],int n)
- {
- int i;
- for(i=0;i<n;i++)
- {
- if(i%10==0)
- printf("\");
- printf("%5d",a[i]);
- }
- printf("\");
- }
- void insert1(int a[],int n)
- {
- int i,x,j;
- for(i=1;i<n;i++)
- {
- x=a[i];
- for(j=i-1;j>-1&&a[j]>x;j--)
- a[j+1]=a[j];
- a[j+1]=x;
- }
- }
- int main()
- {
- int x,a[10];
- int s=0,r=9;
- init(a,10);
- insert1(a,10);
- print(a,10);
- printf("x=");
- scanf("%d",&x);
- void binsrch(int s,int r,int x);
- binsrch(s,r,x);
- getch();
- }
- void binsrch(int s,int r,int x)
- {
- int m;
- m=(s+r)/2;
- if(a[m]==x)
- {
- printf("%d是第%d个位置",x,m+1);
- }
- else if(x>a[m])
- binsrch(m+1,r,x);
- else if(x<a[m])
- binsrch(s,m-1,x);
- else
- exit(-1);
- }
复制代码 |
|