当前位置: 首页> 科技> 互联网 > 石家庄百度推广电话_凤岗网_外汇seo公司_多地优化完善疫情防控措施

石家庄百度推广电话_凤岗网_外汇seo公司_多地优化完善疫情防控措施

时间:2025/7/9 22:37:38来源:https://blog.csdn.net/2301_81949860/article/details/144569279 浏览次数:2次
石家庄百度推广电话_凤岗网_外汇seo公司_多地优化完善疫情防控措施

二分查找算法

二分查找:一种在有序数组中查找特定元素的搜索算法

基本思想

  • 有序数组中,取中间位置的值与待查关键字进行比较
  • 如果中间位置的值比关键字大,则在数组的左半部分继续查找;
  • 如果中间位置的值比关键字小,则在数组的右半部分继续查找;
  • 如果中间位置的值等于关键字,则查找成功。

问题关键:每次比较都会将查找范围缩小一半

代码实现

#include <stdio.h>
int binarySearch(int arr[], int size, int target) {int left = 0;//标记数组左边界int right = size - 1;//标记数组右边界while (right >= left) {int mid = left + (right - left) / 2;//中间数的下标if (arr[mid] == target) {return mid;//找到目标,返回下标}else if (arr[mid] < target) {//目标在中间值的右边left = mid + 1;//更新左边界}else if(arr[mid]>target){//目标在中间值的左边right = mid - 1;//更新右边界}}return -1;//没找到目标值,返回-1
}

快速排序 QuickSort

基本思想

  • 分割——通过一趟排序将要排序的无序表分割成独立的两部分
  • 其中一部分的所有数据项都比另外一部分的所有数据项都要小。
  • 然后再按此方法对这两部分分别进行快速排序
  • 整个排序过程可以递归进行,以此将整个列表变成有序序列。

代码实现

void swap(int* x, int* y) {int temp =  * x;*x = *y;*y = temp;
}int partition(int arr[], int low, int high) {//划分函数,以最后一个元素为基准,找出其下标,令下标左边数比基准小,右边数比基准大int pivot = arr[high];//把最后一个元素作为基准值int i = low - 1;//i用于标记最后一个比基准值小的下标,为什么是i-1,因为下面进入if后需要先进行i++操作for (int j = low; j <= high - 1; j++) {//为什么是j <= high - 1,因为最后一位是基准值,无需被遍历if (arr[j] <= pivot) {//若当前值小于基准值i++;swap(&arr[i] , &arr[j]);//把比基准值小的数从0下标开始放,当遇到本身就比基准值小的数时,自己和自己换}}swap(&arr[i + 1], &arr[high]);//i是最后一个比基准值小数的下标,i + 1这个位置就是基准元素的最终正确位置return i + 1;//基准值的下标}void quickSort(int arr[], int low, int high) {if (low < high) {int pi = partition(arr, low, high);//对基准值左边的数组进行排序quickSort(arr, low, pi - 1);//对基准值右边的数组进行排序quickSort(arr, pi +1, high);}
}

关键字:石家庄百度推广电话_凤岗网_外汇seo公司_多地优化完善疫情防控措施

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: