最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
查找算法
时间:2022-07-02 11:03:30 编辑:袖梨 来源:一聚教程网
#include
#include
#include
typedef int KeyType;
typedef struct{
KeyType key;
}ElemType;
#define EQ(a,b) ((a)==(b))
#define LT(a,b) ((a)< (b))
#define LQ(a,b) ((a)<=(b))
int nu; /*全局变量,初始时要输入的个数*/
typedef struct {
ElemType *elem;
int length;
}SSTable;
int Init(SSTable *L)/*创建空链表*/
{
L->elem=(ElemType *)malloc((nu+1)*sizeof(ElemType));
if(!L->elem) exit(0);
L->length=0;
return 1;
}
int ListInsert(SSTable *L,int i,ElemType e)/*创建链表*/
{ if (i<1||i>L->length+1) return 0;
L->elem[i]=e;
++L->length;
return 1;
}
int DestoyList(SSTable *L)
{ free(L->elem);
free(L);
return 1;
}
int Search_Seq(SSTable ST,KeyType key)/*顺序查找*/
{ int i;
ST.elem[0].key=key;
for(i=ST.length; !EQ(ST.elem[i].key,key); --i);
return i;
}
int Search_Bin(SSTable ST,KeyType key)/*折半查找*/
{
int low,mid,high;
low=1;high=ST.length;
while(low<=high){
mid=(low+high)/2;
if EQ(key,ST.elem[mid].key) return mid;
else if LT(key,ST.elem[mid].key) high=mid-1;
else low=mid+1;
}
}
/* *****************选择排序**********************/
int SelectMinKey(SSTable L,int i)
{
int k;
int j;
k=i;
for(j=i;j
k=j;
return k;
}
void SelectSort(SSTable *L)
{
ElemType t;
int i,j;
for(i=1;i
j=SelectMinKey(*L,i);
if(i!=j) {
t=L->elem[i];
L->elem[i]=L->elem[j];
L->elem[j]=t;
}
}
} /* *******选择排序完**************** */
相关文章
- 《原神》5.2卡池抽取建议 11-14
- 《原神》5.2版本新怪物介绍 11-14
- 《原神》希诺宁增伤触发方法 11-14
- 《原神》循音觅奇活动入口 11-14
- 《原神》循音觅奇兑换码获取方法 11-14
- 《原神》花羽会活动飞行技巧介绍 11-14