• java数据结构之数组


    package demo01;

    import java.util.Arrays;

    public class MyArray {
    private int[] elements;

    public MyArray()
    {
    elements = new int[0];
    }

    //获取长度
    public int size()
    {
    return elements.length;
    }

    //添加元素
    public void add(int element){
    int[] newArr = new int[elements.length+1];
    for(int i = 0;i < elements.length;i++)
    {
    newArr[i] = elements[i];
    }
    newArr[elements.length] = element;
    elements = newArr;//新数组替换旧数组
    }

    //打印元素
    public void printArray()
    {
    System.out.println(Arrays.toString(elements));
    }

    //删除元素
    public void delete(int index)
    {
    if(index < 0 || index > elements.length-1)
    {
    throw new RuntimeException("下标越界");
    }

    int[] newArr = new int[elements.length-1];
    for(int i = 0;i < newArr.length;i++)
    {
    if(i < index)
    {
    newArr[i] = elements[i];
    }
    else{
    newArr[i] = elements[i+1];
    }

    elements = newArr;
    }
    }

    //获取指定位置的元素
    public int get(int index){
    return elements[index];
    }

    //在某个位置插入一个元素
    public void insert(int pos,int value)
    {
    if(pos < 1 || pos > elements.length+1)
    {
    System.out.println("插入位置不合法");
    return;
    }
    int[] newArr = new int[elements.length+1];
    for(int i = 0;i <= elements.length;i++)
    {
    if(i < pos-1)
    {
    newArr[i] = elements[i];
    }
    else if(i == pos-1)
    {
    newArr[i] = value;
    }
    else
    {
    newArr[i] = elements[i-1];
    }
    }


    elements = newArr;
    }

    //替换指定位置的元素
    public void set(int pos,int value)
    {
    if(pos < 1 || pos > elements.length)
    {
    System.out.println("替换位置有误");
    return;
    }
    elements[pos-1] = value;
    }

    //线性查找
    public int search(int target)
    {
    int index = -1;
    for(int i = 0;i < elements.length;i++)
    {
    if(elements[i] == target){
    index = i;
    break;
    }
    }
    return index;
    }

    //二分查找找--查找的目标数组必须是有序的
    public int binarySearch(int target)
    {
    int index = -1;

    int begin = 0;
    int end = elements.length-1;
    int middle;

    //循环查找
    while(true)
    {
    middle = (begin+end)/2;

    if(begin >= end)//出现这种情况,说明目标元素不存在
    {
    break;
    }
    if(elements[middle] == target)//判断中间的元素是不是要查找的元素
    {
    index = middle;
    break;
    }
    else if(elements[middle] > target)
    {
    end = middle-1;
    }
    else
    {
    begin = middle+1;
    }
    }
    return index;
    }

    }
  • 相关阅读:
    详解学习C#的方法和步骤
    将今天写进历史,即可得出现在的世界是数字的
    60秒,我们可以干什么?
    《每个人都会死,但我总以为自己不会》让我直面死亡
    介绍Ext JS 4.2的新特性的《深入浅出Ext JS》上市
    十一阅读攻略:和土豪做朋友,告别穷屌丝,迎接高富帅,成功逆袭!
    超低成本----音视频通讯+共享屏幕+电子白板
    Hbase split的三种方式和split的过程
    分布式数据库 HBase
    Sqoop-1.4.6.bin__hadoop-2.0.4-alpha 环境搭建
  • 原文地址:https://www.cnblogs.com/baoyingying/p/11792783.html
Copyright © 2020-2023  润新知