爱问知识人 爱问教育 医院库

c语言冒泡排序以后用折半查找

首页

c语言冒泡排序以后用折半查找

用冒泡法升序排列以后希望在原数组的基础上用折半 可是我这个把数组改变了 怎么办额! 求教了

#include<stdio.h>
int main()
#define N 10
{
  int arr[10];
  int i,j,t,num,flat,mid;
  flat=0;
  for(i=0;i<10;i++)  
    scanf("%d",&arr[i]);
  for(i=0;i<10;i++)
    for(j=0;j<10-i;j++)
      if(arr[j]>arr[j+1])
      {
        t=arr[j];
        arr[j]=arr[j+1];
        arr[j+1]=t;
      }
  for(i=0;i<10;i++)
    printf("%d ",arr[i]);
  printf("\n");
  printf("输入一个数 找找数组里面到底有木有:");
  scanf("%d",&num);
  j=N,i=0;
  while(i<j)
  {
    mid=(i+j)/2;
    if(arr[mid]==num)
    {  flat=1;
      break;}
    else if(arr[mid]>num)
      j=mid-1;
    else 
      i=mid+1;
  }
  if(flat=1)
    printf("arr[%d]=%d\n",(i+j)/2,num);
  else printf("没介个数!");
  return 0;
}

提交回答
好评回答
  • 2012-06-18 14:01:39
    折半查找的对象必须是有序数组,因此你只有在排序后才能使用折半查找
    你的意思是不是想要原来的位置的索引?如果是,那就你再定义一个数组,保存调整后的数在老数组中的索引,查找后显示老数组索引的值就行了

    好***

    2012-06-18 14:01:39

其他答案

    2012-06-22 14:50:43
  • 楼主的程序没有问题。
    只不过你在冒泡排序后,原有的位置-值映射被改变了。
    如果你想要保存原来的映射,就按楼上的方法,新建一个数组,保存之。
    ps:我看不成你要原来映射的意义何在。

    裤***

    2012-06-22 14:50:43

类似问题

换一换
  • C/C++ 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 174-193
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):