seo网站页面优化包含,更改wordpress链接,花垣做网站,备案网站建设承诺书数据结构—顺序查找和二分查找
原理#xff1a;参考趣学数据结构
代码#xff1a;
#includestdio.h
#includestdlib.h
int n;//查找元素数组的长度
void seqCheckValue1(int* a) {//顺序查找1,有越界判断int v a[0];for (int i 1; i n; i) {if(a[i…数据结构—顺序查找和二分查找
原理参考趣学数据结构
代码
#includestdio.h
#includestdlib.h
int n;//查找元素数组的长度
void seqCheckValue1(int* a) {//顺序查找1,有越界判断int v a[0];for (int i 1; i n; i) {if(a[i]v){printf(查找成功\n\n);return;}}printf(查找失败\n);
}
void seqCheckValue2(int* a) {//顺序查找2,没有越界判断,可以缩减一半的判断语句int v a[0];int i;for ( i n -1; a[i]!v ; i--) {}if (i 0) {printf(查找失败\n);}else {printf(查找成功\n\n);}
}
void biaCheckValue1(int* a,int v,int l, int r) {//顺序查找1,非递归查找int i l, j r;while (i j) {int mid (i j) / 2;if (a[mid] v) {printf(查找成功\n\n);return;}else if (a[mid] v) {j mid - 1;}else {i mid 1;}}printf(查找失败\n);
}
void biaCheckValue2(int* a, int v,int l, int r) {//顺序查找2,递归查找int i l, j r;while (i j) {int mid (i j) / 2;if (a[mid] v) {printf(查找成功\n\n);return;}else if (a[mid] v) {biaCheckValue2(a, v,l, mid - 1);}else {biaCheckValue2(a, v,mid1, l);}}printf(查找失败\n);
}
int main() {int a[5] { 6,4,5,6,8 };int b[5] { 3,4,5,6,8 };n sizeof(a) / sizeof(a[0]);printf(查找方式1\n);seqCheckValue1(a);printf(查找方式2\n);seqCheckValue2(a);printf(查找方式3\n);biaCheckValue1(b,5,0,n-1);printf(查找方式4\n);biaCheckValue2(b, 5, 0, n - 1);printf(\n);system(pause);return 0;
}测试截图 顺序查找 时间复杂度O(n),空间复杂度O(1)
二分查找 非递归 时间复杂度O(logn)空间复杂度O(1) 递归 时间复杂度O(1)空间复杂度O(logn)栈空间
应用场景 顺序查找用在无序数中而二分搜索用在有序数中。
如果存在什么问题欢迎批评指正谢谢