建站与备案的具体流程是什么,启动wordpress mu功能,公司形象vi设计,学校网站推广方案查找查找#xff0c;是指在一些数据元素中#xff0c;通过一定的方法找出与给定关键字相同的数据元素的过程。列表查找#xff08;线性表查找#xff09;#xff1a;从列表中查找指定元素输入#xff1a;列表#xff0c;待查找元素输出#xff1a;元素下标#xff08;…查找查找是指在一些数据元素中通过一定的方法找出与给定关键字相同的数据元素的过程。列表查找线性表查找从列表中查找指定元素输入列表待查找元素输出元素下标未查找到元素时返回-1顺序查找线性查找顺序查找linear search也叫线性查找linear search从列表的第一个元素开始顺序的进行查找直到找到元素或搜索到列表的最后一个元素为止。代码#include stdio.h
#include stdlib.h
#include time.h#define ARR_SIZE 10int linear_search(const int *arr, const int n, const int val)
{for (int i 0; i n; i){if (arr[i] val)return i;}return -1;
}int main(int argc, char *argv[])
{srand(time(NULL));int arr[ARR_SIZE] {0};printf(arr ); for (int i 0; i ARR_SIZE; i){arr[i] rand()%10 1;printf(%d , arr[i]);}printf(\n);int val rand()%10 1;printf(search val %d\n, val);int index linear_search(arr, ARR_SIZE, val);printf(index %d\n, index);return 0;
}结果时间复杂度O(n)顺序查找算法最差的情况需要循环n次所以该算法的时间复杂度为O(n)二分查找法二分查找法binary又叫折半查找从有序的列表初始选区[0 n-1]开始即下标left 0right n - 1通过待查找的值与候选区中间即下标为mid的值继续比较。可以使候选区减少一半。代码#include stdio.h
#include stdlib.h
#include time.h#define ARR_SIZE 10int binary_search(const int *arr, const int n, const int val)
{int left 0;int right n-1;int mid;while (left right){mid (left right)/2;if (arr[mid] val) return mid;else if (arr[mid] val) //候选区在leftright mid - 1;else //候选区在rightleft mid 1;}return -1;
}int main(int argc, char *argv[])
{srand(time(NULL));int arr[ARR_SIZE] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};printf(arr ); for (int i 0; i ARR_SIZE; i)printf(%d , arr[i]);printf(\n);int val rand()%10 1;printf(search val %d\n, val);int index binary_search(arr, ARR_SIZE, val);printf(index %d\n, index);return 0;
}结果时间复杂度或logn二分查找算法每次执行可以使候选区减少一半所以时间复杂度为或logn顺序查找和二分查找比较通过以上分析顺序查找的算法时间复杂度为O(n),二分查找的算法时间复杂度为如果需要查找时并且被查找的列表有序那么选择二分查找执行效率会比顺序查找快很多。如果需要查找时被查找的列表无序就选择顺序查找。但是如果需要频繁查找时我们可以选择先对被查找的列表进行排序然后在选择二分查找从而提高查找的效率。ending