查找(问题代码)
来源:互联网 发布:上海游族网络 编辑:程序博客网 时间:2024/05/21 14:06
#include<cstdio>#include<cstring>#include<cstdlib>#include<time.h>#include<algorithm>#include<iostream>using namespace std;#define overflow -2#define EQ(a,b) ((a)==(b))#define LT(a,b) ((a)<(b))#define LQ(a,b) ((a)<=(b))typedef int KeyType;#define maxsize 20typedef struct { KeyType key;}RedType;typedef struct { RedType *r; int length;}SqList;void InitList_Sq(SqList &L){ L.r=(RedType *)malloc((maxsize+1)*sizeof(RedType)); if(!L.r) exit(overflow); L.length=0;}int search_Seq(SqList L,KeyType key){ int i; L.r[0].key=key; for(i=L.length;!EQ(L.r[i].key,key);--i); return i;}int search_Bin(SqList L,KeyType key){ int low,high,mid; low=1;high=L.length; while(low<=high) { mid=(low+high)/2; if(EQ(key,L.r[mid].key)) return mid; else if(LT(key,L.r[mid].key)) high=mid-1; else low=mid+1; } return 0;}void InsertSort(SqList &L){ int i,j; for(i=2;i<=L.length;++i) if(LT(L.r[i].key,L.r[i-1].key)) { L.r[0].key=L.r[i].key; for(j=i-1;LT(L.r[0].key,L.r[j].key);--j) L.r[j+1].key=L.r[j].key; L.r[j+1].key=L.r[0].key; }}void BubbleSort(SqList &L){ int i,j; KeyType temp; for(i=L.length-1;i>=1;--i) for(j=1;j<=i;j++) if(LT(L.r[j+1].key,L.r[j].key)) { temp=L.r[j+1].key; L.r[j+1].key=L.r[j].key; L.r[j].key=temp; }}int partition(SqList &L,int low,int high){ KeyType pivotkey; L.r[0].key=L.r[low].key; pivotkey=L.r[low].key; while(low<high) { while(low<high && L.r[high].key>=pivotkey) --high; L.r[low].key=L.r[high].key; while(low<high && L.r[low].key<=pivotkey) ++low; L.r[high].key=L.r[low].key; } L.r[low].key=L.r[0].key; return low;}void QSort(SqList &L,int low,int high){ int pivotloc; if(low<high) { pivotloc=partition(L,low,high); QSort(L,low,pivotloc-1); QSort(L,pivotloc+1,high); }}void QuickSort(SqList &L){ QSort(L,1,L.length);}void SelectSort(SqList &L){ int i,j,k; KeyType temp; for(i=1;i<L.length;++i) { j=i; for(k=i+1;k<=L.length;++k) { if(LT(L.r[k].key,L.r[j].key)) j=k; } if(i!=j) { temp=L.r[i].key; L.r[i].key=L.r[j].key; L.r[j].key=temp; } }}void ListGenRand(SqList &L,int n,unsigned k){ int i; L.length=0; srand((unsigned)time(0)+k); for(i=1;i<=n;i++) { L.r[i].key=rand()%100; ++L.length; }}void DispList(SqList L){ int i; for(i=1;i<=L.length;i++) printf("%2d ",L.r[i].key); printf("\n");}int main(){ SqList L; int n,num; unsigned k=0; KeyType key; InitList_Sq(L); srand((unsigned)time(0)); n=!+rand()%maxsize; printf("随机产生元素个数为:%d\n",n); ListGenRand(L,n,++k); printf(" 顺序查找表:"); DispList(L); printf(" 请输入待查找的关键字值:"); scanf("%d",&key); printf("顺序查找表结果:"); num=search_Seq(L,key); if(num) printf("查找成功!第%d个元素。\n",num); else printf("查找不成功!\n"); SelectSort(L); printf(" 折半查找表:"); DispList(L); printf("折半查找结果:"); num=search_Bin(L,key); if(num)printf("查找成功!第%d个元素。\n",num); else printf("查找不成功!\n"); printf("\n"); printf("插入排序结果:\n"); ListGenRand(L,n,++k); printf(" 排序前:"); DispList(L); InsertSort(L); printf(" 排序后:"); DispList(L); printf("冒泡排序结果:\n"); ListGenRand(L,n,++k); printf(" 排序前:"); DispList(L); BubbleSort(L); printf(" 排序后:"); DispList(L); printf("快速排序结果:\n"); ListGenRand(L,n,++k); printf(" 排序前:"); DispList(L); QuickSort(L); printf(" 排序后:"); DispList(L); printf("选择排序结果:\n"); ListGenRand(L,n,++k); printf(" 排序前:"); DispList(L); SelectSort(L); printf(" 排序后:"); DispList(L); return 0;}
0 0
- 查找(问题代码)
- 二分查找 (代码五行)
- 查找及查找代码
- linux下查找CPU占用过高的代码问题
- 查找算法系列(一):二分查找( 描述+代码)
- 带---有测试代码----的二分法查找(折半查找)
- 顺序查找和二分法查找(java代码)
- 二分查找(折半查找)算法及代码
- 查找表问题(c++)
- 查找算法笔记(含代码)
- <1>查找基础知识(无代码)
- 二分查找(两行代码)
- 二分查找笔记(内附代码)
- Java二分查找(代码帖)
- 查找问题
- 【数据结构与算法】【查找】顺序查找(线性查找)的代码实现
- 【数据结构与算法】【查找】折半查找(二分查找)的代码实现
- 查找水军王(问题分析)状态机
- 第十六周OJ(B)
- HDU 1894 String Compare (排序)
- 过虑文件拷贝文件的java代码
- SQLServer 还原语法
- 第十六周项目3-用函数指针调用函数
- 查找(问题代码)
- 开发:随笔记录之 生成6位随机数
- 端口占用
- 第十六周 项目二--用指针玩字符串(2.1.1数组名作形式参数,连接字符串str1和str2)
- 什么是特征向量,特征值,矩阵分解
- Fragment的onCreateView发生java.lang.IllegalStateException
- 在SQL Sever2005/2000下创建一个数据库myDB,该数据库中只有一个学生基本信息(StudentInfo)表
- java.lang.IllegalStateException: No activity
- Android的权限机制