如何解决C++中查找与排序的面试题
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章将为大家详细讲解有关如何解决C++中查找与排序的面试题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。题目:旋转数组的最小数字把一个数组最开始的若干个元素搬到
千家信息网最后更新 2026年11月01日如何解决C++中查找与排序的面试题
这篇文章将为大家详细讲解有关如何解决C++中查找与排序的面试题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
题目:
旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,输入一个递增排序的数组的一个旋转,输出旋转数字的最小元素。
例:{2,3,4,0,1}是{0,1,2,3,4}的旋转,该数组最小值为0
程序1.0
失败的程序,从头遍历一遍,时间复杂度O(N),这个思路没有利用输入旋转数组的特性,随便实现了但是却是失败的
int MinNum(int* array, int length){ int cur = array[0]; for (int i = 1; i < length; i++) { if (array[i]程序2.0
方法类似于二分查找
int MinNum(int* array, int length){ assert(array); assert(length>0); int left = 0; int right = length - 1; int mid = left;//初始化为0,这样若旋转了0个元素则直接返回 while (array[left] >= array[right])//数组为旋转后数组 { if (right - left == 1) { mid = right; break; } mid = (left + right) / 2; if (array[mid] >= array[left]) { left = mid; } else if (array[mid] <= array[right]) { right = mid; } } return array[mid];}//在第一次检测时发现怎么跑都是返回的第一个元素的值,后来检测时发现是在while循环块中在定义mid时在前面不小心加了个int,这使得这个mid为这个块的局部变量,出了这个循环后就被丢弃程序3.0
在2.0中有考虑不完善的地方,若数组为{1,0,1,1,1}或者为{1,1,1,0,1},其左右和中间都是1,无法移动两个指针来缩小查找范围,因而不得不采取顺序查找的方法
int MinInOrder(int *array,int left,int right){ int ret = array[left]; for (int i = left + 1; i <= right; i++) { if (ret>array[i]) { ret = array[i]; } } return ret;}int MinNum(int* array, int length){ assert(array); assert(length > 0); int left = 0; int right = length - 1; int mid = left; while (array[left] >= array[right]) { if (right - left == 1) { mid = right; break; } mid = (left + right) / 2; if (array[left] == array[right] && array[left] == array[mid]) { return MinInOrder(array, left, right); } if (array[mid] >= array[left]) { left = mid; } else if (array[mid] <= array[right]) { right = mid; } } return array[mid];}测试
void test(){ int a[10] = { 8,9,10,11,1,2,3,4,5,6 }; cout<关于"如何解决C++中查找与排序的面试题"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
数组
元素
程序
排序
最小
篇文章
C++
数字
方法
更多
循环
检测
输入
不错
复杂
实用
两个
从头
内容
变量
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技有限公司
互联网与科技
互联网金融 金融科技
万易互联网科技
互联网科技公司怎么样
银优互联网科技有限公司
亿人帮互联网科技
国外互联网科技网站
深圳互联网科技怎么样
山东吉时兔互联网科技有限公司
顶级互联网科技成果有哪些
互联网科技有哪些公司
东莞新华互联网科技学校
2021互联网科技公司排名
南通创西澳互联网科技有限公司
21世纪互联网科技成就
上海创道互联网络科技有限公司
陕西云淼互联网科技公司
互联网科技品牌
盐城市攀科互联网科技有限公司
互联网与科技
科技互联网龙头
互联网科技金融公司
中正互联网科技招聘
济南和联互联网科技有限公司
银川新华互联网科技职业技术培训学校图片
福建科技产业互联网发展
张召忠谈中国互联网科技
恒生科技互联网指数十大成分股
科技发展第三阶段互联网时代