1.二分法:
一直取中间值与要找的数比较,
例如:
#include<iostream>
using namespace std;
int main()
{
int a[]={1,2,3,4,5,6,7,8,9};
int x,left=0,right=sizeof(a),mid=(left+right)/2;
cout<<"数组是a[]={1,2,3,4,5,6,7,8,9},我们找的数字是:"<<endl;
cin>>x;
while(a[mid]>x)
{
if(a[mid]!=x)
right=mid;//右边变成了right
else
left=mid;//左边变成了left
mid=(left+right)/2;//中间变成了mid
}
cout<<a[mid]<<end1;
return 0;
}
2.栈和队列
数据结构是计算机存储,组织数据的方式,数据结构主要包括数组、链表、栈,队列、树。
栈也被称为栈堆,是一种先进后出,删除和插入都在栈顶操作的线性表
图解:
栈的特性:先进后出,后进先出。
最先放入栈的内容最后被拿出来,最后放入栈的内容最先被拿出来。
栈的插入:
push():在栈顶插入元素。
例如;push(1),就是在栈顶插入了1;
栈的删除:
pop():在栈顶移除一个元素,并将栈数-1。
栈的递归应用:一个直接调用自己或通过一系列的调用语句间接的调用自己的函数。
#include<stdio.h>
int f(int m)
{
if(m==1)
return 1;
else
{
printf("m=%d\n",m);
return f(m-1);
}
int main()
{
int n;
int f(int m);
printf("请输入一个大于1的数:");
scanf("%d",&n);
printf("%d",f(n));
return 0;
}