数据结构读书笔记---概念和数组

一、概念

数据结构
数据的逻辑结构
数据的存储结构
数据运算:排序 检索 插入 删除 修改等
集合
线性结构
树形结构
图状结构

抽象数据类型(ADT):由一种数据模型和在该数据模型上的一组操作组成。

二、数组

无序数组

优点:插入快
缺点:查找慢,删除慢

public class Array {
    private String[] strArray;
    private int length=0;  //数组元素个数
    //构造函数
    public Array(int max) {
        strArray=new String [max];
    }
    //插入元素
    public void insert(String cur){
        strArray[length]=cur;
        length++;
    }
    //查找元素
    public int contains(String cur){
        int index=-1;
        for (int i=0;i<length;i++) {
            if (strArray[i].equals(cur)){
                index=i;
                break;
            }
        }
        return index;
    }
    //删除元素
    public boolean delete(String cur){
        int index=-1;
        if((index=contains(cur))!=-1){
            for(int i=index;i<length-1;i++){
                strArray[i]=strArray[i+1];
            }
            length--;
            return true;
        }else {
            return false;
        }
        //列出所有元素
    }
    public void view(){
        for(int i=0;i<length;i++){
            System.out.print(strArray[i]+"\t");
        }
    }
}

有序数组

优点:查找快
缺点:插入慢,删除慢

public class OrderArray {
    private int [] intArray;
    private int length= 0;

    public OrderArray(int max){
        intArray=new int[max];
    }
    //查找元素
    public int find(int target){
        int lower=0;
        int upper=length-1;
        int cur;
        if(upper<0){
            return -1;
        }while (true){
            cur=(lower+upper)/2;
            if (target==intArray[cur]){
                return cur;
            }else if (cur==lower){
                if(target!=intArray[upper]){
                    return -1;
                }
            }else {
                if(intArray[cur]<target){
                    lower=cur;
                }else {
                    upper=cur;
                }
            }
        }
    }
    //插入元素
    public void insert(int target){
        int location=0;
        for(;location<length;location++){
            if (intArray[location]>target)
                break;
        }
        for(int i=length;i>location;i--){
            intArray[i]=intArray[i-1];
        }
        intArray[location]=target;
        length++;
    }
    //删除元素
    public boolean delete(int cur){
        int index=-1;
        if((index=find(cur))!=-1){
            for(int i=index;i<length-1;i++){
                intArray[i]=intArray[i+1];
            }
            length--;
            return true;
        }else {
            return false;
        }
    }
    //列出所有元素
    public void view(){
        for(int i=0;i<length;i++){
            System.out.print(intArray[i]+"\t");
        }
        System.out.println();
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值