0
点赞
收藏
分享

微信扫一扫

数据结构与算法【基础版】:2.7 查找算法整合


2.7 查找算法整合

代码演示:

MyArray.java

package com.kami.leetcode.alg.util;

import java.util.Arrays;

public class MyArray {
//创建一个数组
private int[] arr;

//构造方法
public MyArray(){
arr = new int[0];
}

//获取数组长度的方法
public int size(){
return arr.length;
}

//往数组的末尾添加数组
public void add(int element){
int[] newArr = new int[arr.length + 1];
for(int i = 0; i < arr.length; i++){
newArr[i] = arr[i];
}
newArr[arr.length] = element;
//使用新数组替换原数组
arr = newArr;
}

//打印所有元素
public void show(){
System.out.println(Arrays.toString(arr));
}

//删除数组中的元素
public void deleteForElement(int index){
if(index < 0 || index > arr.length - 1){ //判断下标是否越界
throw new RuntimeException("下标异常");
}
int[] newArr = new int[arr.length - 1];
for(int i = 0; i < newArr.length; i++){
if(i < index){
newArr[i] = arr[i];
}else {
newArr[i] = arr[i + 1];
}
}
arr = newArr;
}

//取出指定位置的元素
public int get(int index){
if(index < 0 || index > arr.length - 1){ //判断下标是否越界
throw new RuntimeException("下标异常");
}
return arr[index];
}

//插入一个元素到指定位置
public void insert(int index, int element){
//创建一个新数组
int[] newArr = new int[arr.length + 1];

//将原数组中的元素放入新数组中
for(int i = 0; i < arr.length; i++){
if(i < index){ //目标位置之前的元素
newArr[i] = arr[i];
}else{ //目标位置之后的元素
newArr[i + 1] = arr[i];
}
}
newArr[index] = element;
arr = newArr;
}

//替换指定位置的元素
public void set(int index, int element){
if(index < 0 || index > arr.length - 1){ //判断下标是否越界
throw new RuntimeException("下标异常");
}
arr[index] = element;
}

//线性查找
public int search(int target){
//遍历数组
for(int i = 0; i < arr.length; i++){
if(arr[i] == target){
return i;
}
}
return -1;
}

//二分法查找
public int binarySearch(int target){
int begin = 0;
int end = arr.length - 1;
int mid = (begin + end) / 2;
while (true){
//什么情况下没有这个元素
//开始位置在结束位置之后或重合,就没有这个元素了
if(begin >= end){
return -1;
}
if(arr[mid] == target){
return mid;
}else {
if(arr[mid] > target){
end = mid - 1;
}else {
begin = mid + 1;
}
mid = (begin + end) / 2;
}
}
}

}

测试:TestMyArraySearch.java

package com.kami.leetcode.alg;

import com.kami.leetcode.alg.util.MyArray;

public class TestMyArraySearch {
public static void main(String[] args) {
MyArray myArray = new MyArray();
myArray.add(5);
myArray.add(6);
myArray.add(7);
myArray.add(8);
int index = myArray.search(0);

int i = myArray.binarySearch(0);
System.out.println(i);
System.out.println(index);
}
}

结果:

数据结构与算法【基础版】:2.7 查找算法整合_i++


举报

相关推荐

0 条评论