Java有序数组的实现

package 有序数组;

public class OrdArray {

	private long[]array;
	private int nElems;
	//初始化
	public OrdArray(int max){
		array = new long[max];
		nElems = 0;
	}
	//返回数组中的大小
	public int size(){
		return nElems;
	}
	//查找的方法的实现
	public int find(long searchKey){
		int lowerBound = 0;
		int upperBound = nElems-1;
		int curIn;
		while (true) {
			curIn = (lowerBound+upperBound)/2;
			if (array[curIn] == searchKey) {
				return curIn;
			} else if (lowerBound > upperBound) {
				return nElems;
			} else {
				if (array[curIn] < searchKey) {
					lowerBound = curIn+1;
				} else {
					upperBound = curIn-1;
				}
			}

		}

	}

	//插入方法的实现
	public void insert(long value) {
		int j = 0;
		for (j = 0;j<nElems;j++) {
			if (array[j] > value) {
				break;
			}
		}
		//移动元素找到要插入的位置
		for (int k = nElems;k>j;k--) {
			array[k] = array[k-1];
		}
		array[j] = value;
		nElems++;

	}

	//删除一个元素的实现
	public boolean delete(long value){
		int j = find(value);
		if (j == nElems) {
			return false;
		}else{
			for (int k = j;k < nElems;k++) {
				array[k] = array[k+1];
			}
			nElems--;
			return true;
		}
	}
	//打印有序数组中的元素的值
	public void display(){
		for (int i = 0;i<nElems;i++) {
			System.out.print(array[i]+" ");
		}
		System.out.println();
	}

}

  

时间: 2024-10-18 19:43:32

Java有序数组的实现的相关文章

java 有序数组合并

有序数组合并,例如: 数组 A=[100, 89, 88, 67, 65, 34], B=[120, 110, 103, 79, 66, 35, 20] 合并后的结果 result=[120, 110, 103, 100, 89, 88, 79, 67, 66, 65, 35, 34, 20] 程序: import java.util.Arrays; public class Test { public static void main(String[] args) { int[] a = {

去掉有序数组中重复数字 原地 leetcode java (最简单的方法)

1.利用荷兰国旗的思路,每次记住最后一个位置,遇到一个不重复的数,放在它后面,代码很简单. Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must do this in place with consta

java面向对象的有序数组和无序数组的比较

package aa; class Array{ //定义一个有序数组 private long[] a; //定义数组长度 private int nElems; //构造函数初始化 public Array(int max){ a = new long[max]; nElems = 0; } //size函数 public int size(){ return nElems; } //定义添加函数 public void insert(long value){ //将value赋值给数组成员

算法--两个有序数组合并

两个有序数组合并 关键点:从后往前进行比较,这样保证数组A有用的部分不会因为在合并的过程中覆盖掉 第15节 有序数组合并练习题 有两个从小到大排序以后的数组A和B,其中A的末端有足够的缓冲空容纳B.请编写一个方法,将B合并入A并排序. 给定两个有序int数组A和B,A中的缓冲空用0填充,同时给定A和B的真实大小int n和int m,请返回合并后的数组. Java (javac 1.7) 代码自动补全 1 import java.util.*; 2 3 public class Merge {

java学习——数组

元素类型[] 数组名 = new 元素类型[元素个数或数组长度]; array 为引用数据类型|-数组数据类型 | 内存结构:程序在运行时,需要在内存中的分配空间.为了提高运行的效率,有对空间进行不同区域的划分,因为每一片区域都有特定的处理数据方式和内存内存管理方式. 栈内存:用于存储局部变量,而数据使用完,所占的空间会自动释放. 堆内存:1,数组和对象,通过new建立的实例都存放在堆内存中 2,每一个实体都有内存地址值. 3,实体中的变量都有默认初始值. 4,实体不在被使用,会在不确定的时间被

黑马程序员——Java基础-数组

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 概念 数组就是同一种类型那个数据的集合,是一个容器,是引用类型,存储在堆中. 好处:可以自动给数组中的元素从0开始编号,方便操作这些元素 格式: 1. int[] arr=new int[5]; 创建一个长度为5 的,变量名为arr,类型为整型的数组. 2. int[] arr=new []{5,6,8,3,4} int[] arr={5,6,8,3,4} 数组中常见问题: 1.数组角标越界

LeetCode 108. Convert Sorted Array to Binary Search Tree (有序数组转化为二叉搜索树)

Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 题目标签:Tree 这道题目给了我们一个有序数组,从小到大.让我们把这个数组转化为height balanced BST. 首先来看一下什么是binary search tree: 每一个点的left < 节点 < right, 换一句话说,每一个点的值要大于左边的,小于右边的. 那么什么是heigh

两个有序数组组成一个有序的数组

package com.hzins.suanfa; import java.util.Arrays; /** * * 两个有序数组组成一个有序的数组 * 整个循环层数为1 * 以其中一个数组做循环,注意另外一个的index是否溢出以及另外一个是否没有遍历完成 * * @author Administrator * */ public class Demo2 { /** * * 1,3,5,7 * 2,4,6,8 * @param a * @param b */ public static voi

LeetCode 88. Merge Sorted Array(合并有序数组)

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initi