| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1111 人关注过本帖
标题:排序的二分查找
取消只看楼主 加入收藏
无力的猛兽
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-5-19
结帖率:0
收藏
已结贴  问题点数:20 回复次数:0 
排序的二分查找

(一)上机题:
一、从键盘接收一个不超过20个数据元素的有序表。
1、输出该有序表。
2、从键盘接收一个关键字K,采用二分查找的方法在有序表中查找与K相等的元素。若查找成功,返回其位置;若查找失败,须将K插入有序表中(即一趟二分插入排序)。要求在屏幕上输出查找过程中,K与哪些元素进行了比较;且查找失败,须输出新的有序表。



运行不了.........................................................................



#include <stdio.h>
#define MAXL 20
#include<stdlib.h>
//#include <iostream>
#include <stack>
typedef int ElemType;
typedef struct //有序表的结构的定义
{
    ElemType data[MAXL];
    int length;
}SqList;
//查找的结构定义
 typedef  int KeyType,InfoType;
typedef struct//
{
KeyType key;
InfoType data;
}NodeType;
typedef NodeType SeqList[MAXL];
void InitList(SqList *&L)     //初始化有序表
{
L=(SqList *)malloc(sizeof(SqList));
L->length=0;
}

void CreatList(SqList *&L,ElemType a[],int n)   //建立有序表
{
int i;
printf("请输入一个不超过20个数据元素的有序表:\n");
for (i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
L=(SqList * )malloc(sizeof(SqList));
for (i=0;i<10;i++)
L->data[i]=a[i];
L->length=10;
}



int ListLength(SqList *L)//有序表的长度
{
return(L->length);
}

void DisqList(SqList *L)     // 输出有序表
{
int i;
//if(ListEmpty(L) )   return;
for (i=0;i<L->length;i++)
printf("有序表为:%c",L->data[i]);
printf("\n");
}
int ListInsert(SqList *&L,ElemType e)//有序表插入查找不匹配的数
{
int i=0,j;
while (i<L->length&& L->data[i]<e) i++;
if (L->data[i]==e)  return 0;
for (j=10;j>i;j--)
L->data[j]=L->data[j-1];
L->data[i]=e;
L->length++;
return 1;
}
int BinSearch(SeqList R,int n,KeyType e)  //二分查找、返回插入函数
{printf("请输入一个关键字e:\n");
scanf("%d\n",e);
int low=0,high=n-1,mid;
//SqList *&L;
while (low<=high)
{mid=(low+high)/2;
if (R[mid].key==e)
return(mid);
if(R[mid].key>e)
high=mid-1;
//return mid-1;
else
low=mid+1;
//return mid+1;
}
return 1;
//return  ListInsert( L, e);

}
int main()
{SqList *&L,R;
ElemType a[MAXL];
KeyType e;
int n;
CreatList(&L,a,n);
DisqList(L);
BinSearch(R,n,e);
if(BinSearch=1)
DisqList(L);
else
{ListInsert( L, e);
DisqList(L);}
return 1;
}
搜索更多相关主题的帖子: 关键字 键盘 元素 
2011-05-19 16:17
快速回复:排序的二分查找
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049959 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved