9.11排序与查找(三)——给定一个排序后的数组,包括n个整数,但这个数组已被旋转过多次,找出数组中的某个元素...
/*** 思路:数组被旋转过了,则寻找拐点。* @param a* @param left* @param right* @param x:要搜索的元素* @return*/public static int search(int[] a,int left,int right,int x){int mid=(left+right)/2;if(x==a[mid])//找到元素return mid;if(left>right)return -1;if(a[left]<a[mid]){//左半边为正常顺序if(x>=a[left]&&x<=a[mid]){return search(a,left,mid-1,x);//搜索左半边}else{return search(a, mid+1, right, x);//搜索右半边}}else if(a[mid]<a[right]){//右半边为正常顺序if(x>=a[left]&&x<=a[mid]){return search(a,left,mid-1,x);//搜索左半边}else{return search(a, mid+1, right, x);//搜索右半边}}else if(a[left]==a[mid]){//左半边是反复元素if(a[mid]!=a[right]){//若右边元素不同,则搜索右边return search(a, mid+1, right, x);//搜索右半边}else{//否则两边都搜索int result=search(a, left, mid=1, x);if(result==-1){return search(a, mid+1, right, x);}elsereturn result;}}return -1;}
转载于:https://www.cnblogs.com/gccbuaa/p/7276835.html
9.11排序与查找(三)——给定一个排序后的数组,包括n个整数,但这个数组已被旋转过多次,找出数组中的某个元素...相关推荐
- 查找python矩阵中最大元素_找出矩阵中最大的元素
当提示输入矩阵中的行数,然后提示输入这些行的元素时,我需要找到矩阵中最大的元素并返回其位置(行和列).在 例如,如果输入2行,如下所示: [1 3 7] [4 8 1] 最大元素的位置将是(1,1), ...
- python步骤解析 给定一个整数数组和目标值_给定一个整数数组和一个目标值,找出数组中和为目标值的两个数 例如给定nums = [2,7,11,15],target = 9...
python解决方案 nums = [1,2,3,4,5,6] #假如这是给定的数组 target = 9 #假如这是给定的目标值 num_list = [] #用来装结果的容器 def run(nu ...
- 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置. 请必须使用时间复杂度为 O(log n) 的算法. 使用暴力算法 解决思想: ...
- 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3-&g ...
- 给定一个排序好的数组,插入一个数,使其仍然有规律不使用排序算法
给定一个排序好的数组,插入一个数,使其仍然有规律 不使用排序算法 public class test14 { //数组习题public static void main(String[] args) ...
- 给定一个排序后的数组,包含n个整数,但这个数组已被旋转过多次,找出数组中的某个元素...
2019独角兽企业重金招聘Python工程师标准>>> /** * 功能:给定一个排序后的数组,包含n个整数,但这个数组已被旋转过多次,次数不详.找出数组中的某个元素. * 可以假定 ...
- 【Golang第6章:排序和查找】golang怎么排序,golang的顺序查找和二分查找,go语言中顺序查找二分查找介绍和案例
介绍 这个是在B站上看边看视频边做的笔记,这一章是GO语言的排序和查找 有golang怎么排序,golang的顺序查找和二分查找,go语言中顺序查找二分查找介绍和案例,具体请看[文章目录] 配套视频自 ...
- 给定一个含n(n≥1)个整数的数组,请设计一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数。
笔者初涉<算法设计与分析>这门专业课,在做一些算法设计题的过程中遇到一些小感悟,特此记录和大家分享. 下面直接给出算法题目: 给定一个含n(n≥1)个整数的数组,请设计一个在时间上尽可能高 ...
- 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], target ...
最新文章
- Python多线程threading和多进程multiprocessing的区别及代码实现
- 国考临近——送给奔跑在国考路上的人的一些话
- python输入数组并计算_利用Python进行数据分析——Numpy基础:数组和矢量计算
- 如何在Github里创建organization和代码仓库
- oracle數據庫any,Oracle权限集合全集
- java程序打包为jar_将Java应用程序打包为一个(或胖)JAR
- 用户模式下的线程同步
- C++之构造函数和类型转换探究
- 【万字总结,花几分钟让你进一步了解指针】(学习笔记11--指针中)
- 特斯拉电动卡车霸气发布,还有一个意外惊喜(全新跑车)
- js基础之--变量 作用域和内存问题
- java map是有序的吗_java中map、set、list是否有序
- Rational Rose工具栏中没有参与者工具(小人图标)的解决方法
- 变压器励磁模型 Matlab/simulink 可用于模拟电压暂降等电能质量问题
- java的LocalDateTime类来获取当天时间、前一天时间,本周的开始和结束时间、本月的开始和结束时间
- 百度脑图-便捷的思维工具
- centos7 linux ffmpeg 改变 修改 视频 帧频 shell 懒人系列-17
- 产生式推理的简单识别系统
- CAD 批量提取点坐标,实现坐标的快速提取
- 用c语言编写一个酒店点菜菜单,C课程设计报告酒店点菜管理系统设计.doc