顺序表应用6:有序顺序表查询
来源:互联网 发布:欧弟老婆淘宝店叫什么 编辑:程序博客网 时间:2024/06/03 22:58
这道题的算法思想就是利用二分查找来缩短查找的时间。
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define LISTSIZE 20000
typedef struct{
int *elem;
int length;
int listsize;
}Sqlist;
int Initialist(Sqlist *L){
L->elem=(int *)malloc(LISTSIZE*sizeof(Sqlist));
if (!L->elem) exit(-1);
L->length=0;
L->listsize=LISTSIZE;
return 1;
}
int Insertlist(Sqlist *L,int i,int e){
if (i<1||i>L->length+1) printf("ERROR");
int *q=&(L->elem[i-1]);
int *p;
for (p=&(L->elem[L->length-1]);p>=q;p--){
*(p+1)=*p;
}
*q=e;
L->length++;
return 1;
}
int Querylist(Sqlist *A,int length,int a){/*利用二分查找进行比较*/
int i=0,j=length-1,mid;
while (i<=j){
mid=(i+j)/2;
if (a<A->elem[mid])
j=mid-1;
else if(a>A->elem[mid])
i=mid+1;
else if (a==A->elem[mid])
return (mid+1);
}
return -1;
}
int main(){
int i,j,n,m,d,k;
Sqlist A;
Initialist(&A);
Sqlist B;
Initialist(&B);
scanf("%d",&n);
for (i=1;i<=n;i++){
scanf("%d",&d);
Insertlist(&A,i,d);
}
scanf("%d",&m);
for (i=1;i<=m;i++){
scanf("%d",&d);
Insertlist(&B,i,d);
}
for (i=0;i<B.length;i++){
k=Querylist(&A,A.length,B.elem[i]);
if (k==-1){
if (i==B.length-1)
printf("No Found!");
else
printf("No Found!\n");
}
else{
if(i==B.length-1)
printf("%d",k);
else
printf("%d\n",k);
}
}
return 0;
}
- SDUT 3330顺序表应用6:有序顺序表查询
- 顺序表应用6:有序顺序表查询
- 顺序表应用6:有序顺序表查询
- 顺序表应用6:有序顺序表查询
- 顺序表应用6:有序顺序表查询
- 顺序表应用6:有序顺序表查询
- 【3330】顺序表应用6:有序顺序表查询
- 顺序表应用6:有序顺序表查询
- 顺序表应用6:有序顺序表查询
- 顺序表应用6:有序顺序表查询
- 顺序表应用6:有序顺序表查询
- 顺序表应用6:有序顺序表查询
- 顺序表应用6:有序顺序表查询
- 顺序表应用6:有序顺序表查询
- sdut oj3330 顺序表应用6:有序顺序表查询
- 顺序表应用6:有序顺序表查询
- 顺序表应用6:有序顺序表查询
- SDUT3330顺序表应用6:有序顺序表查询
- java语言基础入门——异常处理
- 使用 Date 和 SimpleDateFormat 类表示时间
- UIScrollView的循环滚动+UIPageControll+NSTimer实现的自动循环滚动播放最终完善版
- 字符串匹配算法 之 (Horspool )Boyer-Moore-Horspool
- 复习java 总结的一些小细节(一)
- 顺序表应用6:有序顺序表查询
- 趣味100道C语言编程题
- 16.1 用户变量语法
- Linux下使用Vi时方向键变乱码、删除键不能使用的解决方法(亲测有效)
- 【HDU】1160 - FatMouse's Speed(dp & 栈)
- android --webview控件 浏览器制作
- 淘宝放大镜效果
- 图片轮番
- 华为在线训练(5)