数据结构和算法【01】
1.数据结构和算法概述
数据结构:对计算机内存中的数据的一种安排。
算法:对结构中的数据进行各种处理。
应用方面:
- 现实世界的数据存储
- 程序员的工具
- 关于现实世界的建模
数据结构 | 优点 | 缺点 |
---|---|---|
数组 | 插入快、知道下标 | 查找慢、删除慢、大小固定 |
有序数组 | 比无序数组查找快 | 删除慢、大小固定 |
栈 | 提供后进先出的存取方式 | 存取其他项很慢 |
对列 | 先进先出的方式存取方式 | 存取其他项很慢 |
链表 | 插入 删除 快 | 查找慢 |
二叉树 | 查找、插入、删除都快【树平衡的情况下】 | 删除的算法比较复杂 |
红黑树 | 插入、查找、删除都快【平衡树】 | 算法复杂 |
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]+" ");
}
}
}