数据结构和算法【01】

1.数据结构和算法概述

数据结构:对计算机内存中的数据的一种安排。

算法:对结构中的数据进行各种处理。

应用方面:

  1. 现实世界的数据存储
  2. 程序员的工具
  3. 关于现实世界的建模
数据结构优点缺点
数组插入快、知道下标查找慢、删除慢、大小固定
有序数组比无序数组查找快删除慢、大小固定
提供后进先出的存取方式存取其他项很慢
对列先进先出的方式存取方式存取其他项很慢
链表插入 删除 快查找慢
二叉树查找、插入、删除都快【树平衡的情况下】删除的算法比较复杂
红黑树插入、查找、删除都快【平衡树】算法复杂
2-3-4树插入、查找、删除都快【平衡树】算法复杂
哈希表插入快、通过关键字存取快删除慢
插入、删除快面对最大数据项的存取快对其他数据项存取慢
对现实世界建模有些算法慢且复杂

算法概述

数据库

记录

字段

关键字

Class 类 :对象的模型

对象:类的实例(主要包括方法和变量)

数组介绍

删除慢,是因为删除之后数组中的元素要往前移

public static void main(String[] args) {
    long[] arr;//声明数组
    arr = new long[100];//创建数组
    int nElems = 0;
    int j;
    long searchKey;
    
    arr[0] = 77;
    arr[1] = 177;
    arr[2] = 277;
    arr[3] = 377;
    arr[4] = 477;
    arr[5] = 577;
    arr[6] = 677;
    arr[7] = 777;
    nElems = 10;
    //显示所有元素
    for( j = 0 ; j<nElems; j++){
        System.out.println(arr[j]+ "")
    }
    //查找
    searchKey = 477;
    for(j = 0 ; j<nElems;j++) {
        
    }
    //删除 删除元素之后,后面的数据往前移动
    searchKey = 577;
    for( j = 0 ;j < nElems ; j++){
        if(arr[j] == searchKey) break;
    }
    for( int k = j ; k <nElems ; j++){
        arr[k] = arr[k+1];
    }
    nElems --;
    
}
/**
 * heyzen.club Inc.
 * Copyright (c) 2018-2019 All Rights Reserved.
 */
package Array;

/**
 * @author Zen
 * @version $Id: HighArray.java, v 0.1 2019/04/28 20:56 Zen Exp $
 */
public class HighArray {
    private long[] a;
    private int nElemse;
    public HighArray(){

    }
    public HighArray(int max) {
        a = new long[max];
        nElemse = 0;
    }

    /**
     * 根据指定值查到是否存在数组中
     * @param searchKey
     * @return
     */
    public boolean find(long searchKey) {
        int j;
        for( j = 0;j <nElemse ;j++) {
            if(a[j] == searchKey) {
                break;
            }
            if(j == nElemse){
                return false;
            }
        }
        return true;
    }

    /**
     * 数组中插入值
     * @param value
     */
    public void insert(long value) {
        a[nElemse] = value;
        nElemse++;
    }

    /**
     * 删除一个元素
     * @param value
     * @return
     */
    public boolean delete(long value) {
        int j;
        for(j = 0 ;j < nElemse;j++) {
            if(a[j] ==value){
                break;
            }
        }
        if(j == nElemse){
            return false;
        }else{
            for( int k = j;k<nElemse;k++){
                a[k] = a[k+1];
            }
            nElemse --;
            return true;
        }
    }

    /**
     * 显示所有
     */
    public void display() {
        for(int i = 0 ; i < nElemse;i++){
            System.out.print(a[i]+"  ");
        }
    }

}
/**
 * heyzen.club Inc.
 * Copyright (c) 2018-2019 All Rights Reserved.
 */
package Array;

/**
 * @author Zen
 * @version $Id: HighArray.java, v 0.1 2019/04/28 20:56 Zen Exp $
 */
public class HighArray {
    private long[] a;
    private int nElemse;
    public HighArray(){

    }
    public HighArray(int max) {
        a = new long[max];
        nElemse = 0;
    }

    /**
     * 根据指定值查到是否存在数组中
     * @param searchKey
     * @return
     */
    public boolean find(long searchKey) {
        int j;
        for( j = 0;j <nElemse ;j++) {
            if(a[j] == searchKey) {
                break;
            }
            if(j == nElemse){
                return false;
            }
        }
        return true;
    }

    /**
     * 数组中插入值
     * @param value
     */
    public void insert(long value) {
        a[nElemse] = value;
        nElemse++;
    }

    /**
     * 删除一个元素
     * @param value
     * @return
     */
    public boolean delete(long value) {
        int j;
        for(j = 0 ;j < nElemse;j++) {
            if(a[j] ==value){
                break;
            }
        }
        if(j == nElemse){
            return false;
        }else{
            for( int k = j;k<nElemse;k++){
                a[k] = a[k+1];
            }
            nElemse --;
            return true;
        }
    }

    /**
     * 显示所有
     */
    public void display() {
        for(int i = 0 ; i < nElemse;i++){
            System.out.print(a[i]+"  ");
        }
    }

}

本文链接:

https://heyzen.club/index.php/Coder/275.html
1 + 3 =
快来做第一个评论的人吧~