有序表查找
来源:互联网 发布:华为网络面试 知乎 编辑:程序博客网 时间:2024/06/17 09:12
#include<stdio.h>#define OK 1#define ERROR 0#define TRUE 1#define FLASE 0#define MAXSIZE 100typedef int Status;/* 顺序查找,a为数组,n为要查找的数组长度,key为要查找的关键字*/int Sequential_Search(int *a,int n,int key){ int i; for(i=1;i<=n;i++) { if(a[i]==key){ return i; } } return 0;}/* 有哨兵顺序查找,每次循环时不需要判断i是否越界*/int Sequential_Search2(int *a,int n,int key){ int i; a[0]=key; i=n; while(a[i]!=key){ i--; } return i; //返回0则说明查找失败}//二分查找有序表Status TwoSort(int *a,int n,int key){ int low,high,mid; low=1; //定义最低下标为记录首位 high=n; //定义最高下标为记录末尾 while(low<=high){ mid=(low+high)/2; //折半 if(key>a[mid]){ //如果查找值比中间值大 low=mid++; //最低下标调整到中间位置下标高一位 }else if(key<a[mid]) //如果查找值比中间值小 { high=mid--; //最高下标调整到中间值下标低一位 }else{ return mid; //如果相等则说明mid即为查找到的位置 } } return 0;}//二分优化 插值查找 优化中间值Status TwoSort1(int *a,int n,int key){ int low,high,mid; low=1; //定义最低下标为记录首位 high=n; //定义最高下标为记录末尾 while(low<=high){ mid=low+ (high-low)*(key-a[low])/(a[high]-a[low]); /* 插值 */ if(key>a[mid]){ //如果查找值比中间值大 low=mid+1; //最低下标调整到中间位置下标高一位 }else if(key<a[mid]) //如果查找值比中间值小 { high=mid-1; //最高下标调整到中间值下标低一位 }else{ return mid; //如果相等则说明mid即为查找到的位置 } } return 0;}int main(){ int a[MAXSIZE],result,result2,result3,result4; int arr[MAXSIZE]={1,2,16,24,35,47,59,62,73,88,99}; //赋值给a[]数组从1到100 for(int i=0;i<=100;i++){ a[i]=i; } result=Sequential_Search(a,MAXSIZE,20); printf("你查找元素所在数组的下标是:%d\n",result); result2=Sequential_Search2(arr,11,88); printf("你查找元素所在的数组的下标是:%d\n",result2); //二分查找 result3=TwoSort(arr,10,35); printf("你使用二分法查找的元素所在的数组的下标是:%d\n",result3); result4=TwoSort1(arr,10,35); printf("你使用插值法查找的元素所在的数组的下标是:%d\n",result4);}
有序查找:
阅读全文
0 0
- 查找-顺序,有序表
- 有序表查找
- 有序表查找
- 有序表的查找
- 有序表的查找
- 有序表查找
- 数据结构--有序表查找
- 有序表查找
- 有序表的二分查找
- 有序表查找优化算法
- 有序表的折半查找
- 折半查找:有序表的查找
- 有序表的查找(折半查找)
- 有序表查找_插值查找
- 有序表的查找(折半查找)
- PHP有序表查找----插值查找
- 有序表查找——折半查找
- 有序查找
- python 输出编码错误问题
- 消除疲劳八法
- sql常见函数
- 【数论 Day2】基础归纳法 题解
- python014 -- 常用内建函数
- 有序表查找
- mysql ERROR 1050 (42S01): Table already exists
- myeclipse的servlet及jsp模板自定义
- classpath的含义
- 编译原理算符优先分析算法
- DES 加密 解密 工具类
- 隐藏元素的八种方法
- hdu1878—欧拉回路(欧拉回路判断)
- vue中的学习小记录