#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,x=2;//测试数据
void rank(int a[],int n);
void search(int a[],int n,int x);//前提是已进行过升序排序
int a[9]={9,2,6,4,8,3,7,5,1};//测试数据
rank(a,9);
search(a,9,x);
putchar('\n');
for(i=0;i<9;i++)
{
printf("%d ",a[i]);
}
return 0;
}
void rank(int a[],int n)//升序排序
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>=a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
void search(int a[],int n,int x)//折半查找
{
int i,s,j,b=0;
i=0;
j=n-1;
while(i<=j)
{
s=(i+j)/2;
if(x<a[s])
{
i=0;
j=s-1;
}
else if(x>a[s])
{
i=s+1;
j=n-1;
}
else if(x==a[s])
{
printf("%d\n",s);
b=1;
break;
}
}
if(b==0)
{
printf("Not Find\n");
}
}
12-6.1:升序排序+普通折半查找
最新推荐文章于 2021-12-15 22:04:13 发布