插入一个整数到一个有序的数组中,并保证该数组是有序的

需求:将一个数插入到一个有续的数组中,插入成功后,还要保证该数组中的数是有序的

思考:

1)、用折半查找法找到这个数在数组中的位置,如果这个数存在数组中,就把这个数插入到这个数所在数组中的位置上就可以了,如果这个数不存在数组中,则返回这个数组中最小下标的值,该下标值就是该数要插入数组中的位置

2)、将这个数插入到指定数组中的位置

/**
 * 折半查找法找到一个元素在数组中的下标
 * @param arr 数组
 * @param key 要查找的元素
 * @return 找到则返回元素在数组中的下标,如果没找到,则返回这个元素在有序数组中的位置
 * 如:[1,4,6,7,10,11,15],查找8在数组中的位置,如果存在则返1,不存在则返回在7这个下标+1的这个位置上,也就是说在返回10所在位置上的下标
 */
public static int arrayIndexOf(int[] array,int key) {
	int min,max,mid;
	min = 0;
	max = array.length - 1;

	while(min <= max) {

		mid = (min + max) >> 1;

		if (key > array[mid]) {
			min = mid + 1;
		} else if (key < array[mid]) {
			max = mid - 1;
		} else {
			return mid;
		}
	}
	return min;
}

时间: 2024-11-09 02:04:30

插入一个整数到一个有序的数组中,并保证该数组是有序的的相关文章

php获取数组中键值最大数组项的索引值[原创]_php技巧

本文实例讲述了php获取数组中键值最大数组项的索引值的方法.分享给大家供大家参考.具体分析如下: 一.问题: 从给定数组中获取值最大的数组项的键值.用途如:获取班级得分最高的学生的姓名. 二.解决方法: <?php /* * Created on 2015-3-17 * Created by www.jb51.net */ $arr=array('tom'=>9,'jack'=>3,'kim'=>5,'hack'=>4); asort($arr); //print_r($ar

删除去除二维数组中相同元素与数组重复值实例

$list = array(         array('id'=>107,'title'=>'aaa'),         array('id'=>106,'title'=>'bbb'),         array('id'=>105,'title'=>'ccc'),         array('id'=>104,'title'=>'ccc'),         array('id'=>103,'title'=>'ddd'),      

二维数组中的查找概述

这一题给跪,c++死活超时...后来main函数改成用c就好了... 算法: /* 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入的第一行为两个整数m和n(1<=m,n<=1000):代表将要输入的矩阵的行数和列数. 输入的第二行包括一个整数t(1<=t<=1000000):代表要查找的数字.

php数组声明、遍历、数组全局变量使用小结_php基础

php教程:数组声明,遍历,数组全局变量 复制代码 代码如下: <? /* * 一.数组的概述 * 1.数组的本质:管理和操作一组变量,成批处理 * 2.数组时复合类型(可以存储多个) * 3.数组中可以存储任意长度的数据,也可以存储任意类型的数据 * 4.数组可以完成其他语言数据结构的功能(链表,队列,栈,集合类) * * * * 二.数组的分类 * 数组中有多个单元,(单元称为元素) * 每个元素(下标[键]和值) * 单访问元素的时候,都是通过下标(键)来访问元素 * 1.一维数组,二维数

Java中高效的判断数组中某个元素是否存在详解_java

一.检查数组是否包含某个值的方法 使用List public static boolean useList(String[] arr, String targetValue) { return Arrays.asList(arr).contains(targetValue); } 使用Set public static boolean useSet(String[] arr, String targetValue) { Set<String> set = new HashSet<Stri

php数组声明,遍历,数组全局变量

php教程数组声明,遍历,数组全局变量 <?php /*  * 一.数组的概述  * 1.数组的本质:管理和操作一组变量,成批处理  * 2.数组时复合类型(可以存储多个)  * 3.数组中可以存储任意长度的数据,也可以存储任意类型的数据  * 4.数组可以完成其他语言数据结构的功能(链表,队列,栈,集合类)  *   *  *  * 二.数组的分类  *  数组中有多个单元,(单元称为元素)  *  每个元素(下标[键]和值)  *  单访问元素的时候,都是通过下标(键)来访问元素  *  1

js-JS或JQuery 取数组中相同的内容

问题描述 JS或JQuery 取数组中相同的内容 [['1','a','b'],['2','a','c'],['2','a','b'],['3','a','b'],['2','a','c']] 得到結果 [['6','a','b'],['4','a','c']] 当第2.3位相同时将第一位的算和,请问各位大神用JS或JQuery 有什么好方法?谢谢了 解决方案 var arr = [['1', 'a', 'b'], ['2', 'a', 'c'], ['2', 'a', 'b'], ['3',

java中字符串转换为字节数组请问用什么方法,字符串返回字节数组怎么做?

问题描述 java中字符串转换为字节数组请问用什么方法,字符串返回字节数组怎么做? java中字符串转换为字节数组请问用什么方法,字符串返回字节数组怎么做? 解决方案 http://blog.csdn.net/shuaihj/article/details/7478773http://blog.csdn.net/abin_gha/article/details/6317850 解决方案二: java中String类有getBytes方法,可以将字符串转成字节数组.字节数组可以直接写入到输出流中,

c语言-关于去除数组中重复元素的问题

问题描述 关于去除数组中重复元素的问题 源代码:#include #include int main() { int *a; int n,i,j; scanf("%d",n); a=(int *)malloc(n*sizeof(int)); for (i=0;i<n;i++) scanf("%d",&a[i]); for (i=0;i<n;i++) for (j=1;j<n;j++) if (a[i]==a[j]) printf (&quo