您的位置:首页 > 编程语言 > C语言/C++

C语言:冒泡排序和二分查找混合

2012-06-20 23:03 417 查看
/*折半查找法*/

#include<stdio.h>

#include<stdlib.h>

#include<windows.h>

/*函数调用*/

#include<stdio.h>

void sort(float *sco)

{

int i,j,tmp;

//float tmp;

for(i=0;i<9;i++)

for(j=i+1;j<10;j++)

{

if(sco[i]<sco[j])

{

tmp=sco[i];

sco[i]=sco[j];

sco[j]=tmp;

}

}

}

/*主程序*/

void main()

{

int i;

float score[10],k;

printf("请输入成绩:\n");

for(i=0;i<=9;i++)

{

scanf("%f",&score[i]);//注意不能在定义类型中限制小数位数,只能在输出时限制。

}

printf("初始分数为:\n");

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

printf("%.1f\t",score[i]);//打印输入的成绩

sort(score);//调用函数。

printf("调用排序函数后\n");

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

printf("%.1f\t",score[i]);

/*开始折半查找调用*/

printf("请输入要查找的条件\n");

int min=0,max=9,a;//max为下限,min为上限,a为中间;

fflush(stdin);

scanf("%f",&k);//输入的条件;

while(min<=max)

{

a=(min+max)/2;//折半

if(score[a]==k)//通过下标对比判断

{

printf("score[%d]=%.1f\n",a,k);

exit(0);//结束程序

}

else if(score[a]>k)//如果n[a]中的数值大于K的值,那么前移一个。进行对比,反之加1后移对比。

{

min=a-1;

}

else

{

max=a+1;

}

}

printf("没有找到此数值%.1f\n",k);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: