数据结构(C语言版)——有序表查找(折半查找)(代码版)
数据结构(C语言版)——有序表查找(折半查找)(代码版)
#include
#include
#define ERROR 0
#define OK 1
#define MAXSIZE 20
typedef int Status;
Status binarySearch(int arr[],int arrLenght,int wantSearchElement);
int main(int argc, char *argv[]) {
int data[MAXSIZE],size,i,wantSearch,result;
printf("请输入初始化数组大小(1-%d):",MAXSIZE);
scanf("%d",&size);
printf("请输入数组元素(空格隔开):");
for(i=1;i<=size;i++)
{
if(scanf("%d",&data[i])==0)
{
printf("输入错误\n");
fflush(stdin);
return ERROR;
}
}
printf("请输入你要查找的内容:");
if(scanf("%d",&wantSearch)==0)
{
printf("输入错误\n");
fflush(stdin);
return ERROR;
}
if((result=binarySearch(data,size,wantSearch))==ERROR)
{
printf("你要查找的元素不在数组中\n");
return ERROR;
}
printf("元素在数组中%d位置\n",result);
return 0;
}
Status binarySearch(int arr[],int arrLenght,int wantSearchElement)
{
int low=1,hight=arrLenght,mid;
while(hight>=low)
{
mid=(low+hight)/2;
if(arr[mid]>wantSearchElement)
{
hight=mid-1;
}
else if(arr[mid]
{
low=mid+1;
}else
{
return mid;
}
}
return ERROR;
}
(一)、核心代码
Status binarySearch(int arr[],int arrLenght,int wantSearchElement)
{
int low=1,hight=arrLenght,mid;
while(hight>=low)
{
mid=(low+hight)/2;//获取数组下标中间值
if(arr[mid]>wantSearchElement)
{//如果数组中间值,大于wantSearchElement
hight=mid-1;
}
else if(arr[mid]
{
low=mid+1;
}else
{
return mid;
}
}
return ERROR;
}
数据结构(C语言版)——有序表查找(折半查找)(代码版)相关教程
数据结构(3):队列的原理和实现
数据结构(3):队列的原理和实现 完整代码拉到最底下 队列顾名思义就像我们生活中排队一样,先进先出。 如上图所示,25、16、5、9依次在队列中,按照顺序拿出的数据也分别是25、26、5、9。 底层使用数组来实现,实现的功能有插入数据到队尾、移除队首数据、
数据结构(C语言版)——有序表查找(插值查找)(代码版)
数据结构(C语言版)——有序表查找(插值查找)(代码版) #include stdio.h#include stdlib.h#define ERROR 0#define OK 1#define MAXSIZE 20typedef int Status;Status binarySearch(int arr[],int arrLenght,int wantSearchElement); int main(int argc, char *
67道数据结构题-剑指offer-二叉树
67道数据结构题-剑指offer-二叉树 先补习一下二叉树的知识吧(2020-10-3) 二叉树是n个节点构成的集合,可以为空树也可以为非空树/*空树就没有结点,非空树起码一个节点空树*/只有一个节点/*只有一个父亲*/二叉树的独有特性: 1. 每个结点至多/*注意是至多*/
六十七.深度优先遍历C语言实现(有向图)
六十七.深度优先遍历C语言实现(有向图) #includestdio.hint min = 9999999,book[101],n,e[101][101]; //假设9999999为正无穷 void dfs(int cur,int dis) //cur是当前所在的顶点编号,dis是当前已经走过的路程 {int j; if(dismin) //如果当前走过的路程已经
【数据结构】图的深度优先遍历
【数据结构】图的深度优先遍历 以无向图为例 邻接矩阵,该邻接矩阵纵坐标(i)为访问的起点,而横坐标(j)代表访问终点 (1)起点为2,先将Visited数组(Bool)当中,表示为2的结点,标记为1,代表已经访问 (2)查看纵坐标i=2的行,其中横坐标j=1的列,发现
数据结构(C语言版)——有序表查找(斐波那契查找)(代码版)
数据结构(C语言版)——有序表查找(斐波那契查找)(代码版) #include stdio.h#include stdlib.h#define ERROR 0#define OK 1#define MAXSIZE 20typedef int Status; Status fbi(int number);Status fbiSearch(int fbiArr[],int fbiArrLenght,int dataArr[],int
【leetcode千题】21. 合并两个有序链表
【leetcode千题】21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1-2-4, 1-3-4 输出:1-1-2-3-4-4 思路:直接一个个遍历呗 # Definition for singly-linked list.# cla
C语言第8题:变量作用阈
C语言第8题:变量作用阈 #includestdio.hint a = 20;//全局变量void test1(){int a1 = 0;int a = 100;}void test2(){int a2 = 100;}int main(){int a = 0;a = 10;system(pause);return 0;} 文件中的变量 extern int a ; 出现在括号外面的变量就是全局变量 不