Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26407
  • 博文数量: 41
  • 博客积分: 185
  • 博客等级: 入伍新兵
  • 技术积分: 260
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-20 13:48
文章分类

全部博文(41)

文章存档

2013年(20)

2012年(21)

我的朋友
最近访客

分类: C/C++

2013-01-07 15:58:36


点击(此处)折叠或打开

  1. //数组-折半查找法
  2. #include"stdio.h"
  3. #define N 10
  4. int main(void)
  5. {
  6.     int a[N],i,j,low,high,mid,num,temp,found;
  7.     char choice;
  8.     printf("Please enter %d integers:",N);
  9.     for(i=0;i<N;i++)
  10.         scanf("%d",&a[i]);
  11.     //输入N个整数
  12.     for(j=1;j<N;j++)
  13.         for(i=0;i<N-j;i++)
  14.             if(a[i]>a[i+1])
  15.             {
  16.                 temp=a[i+1];
  17.                 a[i+1]=a[i];
  18.                 a[i]=temp;
  19.             }
  20.     printf("The sorted data is:");
  21.     for(i=0;i<N;i++)
  22.         printf(" %d",a[i]);
  23.     printf("\n");
  24.     //利用冒泡法进行排序并输出
  25.     while(1)/*死循环,不输入"N/n"不结束*/
  26.     {
  27.         printf("Please enter a number to look for:");
  28.         scanf("%d",&num);
  29.         getchar();
  30.         low=0;
  31.         high=N-1;
  32.         found=0;
  33.         /*每次都初始化一次*/
  34.         while(low<=high)
  35.         {
  36.             mid=(low+high)/2;
  37.             if(num==a[mid])
  38.             {
  39.                 found=1;
  40.              break;
  41.             }
  42.             else if(num>a[mid]) low=mid+1;
  43.             else high=mid-1;
  44.         }
  45.     if(found==1)
  46.         printf("Has found %d,its position is:%d\n",num,mid+1);
  47.     else
  48.         printf("There is not %d in the data\n",num);
  49.     printf("Continue or Not(Y/N)");
  50.     choice=getchar();
  51.     if(choice=='N'||choice=='n')
  52.         break;
  53.     }
  54.         return 0;
  55. }


阅读(143) | 评论(0) | 转发(0) |
0

上一篇:带头结点的单链表操作

下一篇:C文件操作

给主人留下些什么吧!~~