数据结构基本知识

数据结构

1.基本概念

1.数据(data):能够被计算机识别,存储,加工和处理的描述客观世界的数字等符号的总称.

2.数据项(data Item):数据不可分割的最小标识单位,是数据元素的组成部分,也可称为字段和域.

如"书名""价格""作者"等都可以作为一个数据项

3.数据元素(Data Element):是数据的基本单位,又可成为元素,节点,顶点,记录等.是一个数据整体中可以被标识和访问的数据单元.

如"书名""价格""作者"放在一起就是一个数据元素

4.数据对象(Data Object):是性质相同的数据元素的集合,也叫数据元素类.

5.数据结构(Data Structure):是数据元素相互之间存在一种或多种关系的集合

数据结构包含3方面内容:

1.数据的逻辑结构

是指数据元素之间的逻辑关系,有数据元素的集合和定义在集合上的关系组成. 逻辑结构与存储无关,独立于计算机.是从具体问题抽象出来的数学模型.

(1)集合

(2)线性结构

(3)树形结构

(4)图形结构

数据的逻辑结构主要涉及两个方面:数据元素和逻辑关系.逻辑结构的定义为Logica_Structures = (D,R)

2.数据的存储结构

逻辑结构在计算机中的实现叫做存储结构,存储结构依赖即计算机.

(1)顺序存储结构

存放在连续的存储单元,元素的逻辑次序和物理存储次序一致.即在物理位置上相邻的元素,在逻辑上也相邻.

(2)链式存储结构

使用地址分散的存储单元存放数据,逻辑上相邻的元素,物理位置上不一定相邻.数据元素间的逻辑关系通常由附加的指针表示,指针记录前驱元素和后继元素的存储地址.

(3)索引存储结构

增加索引表,索引表由关键字和地址构成.关键字唯一标识一个元素,地址为该数据元素存储地址的首地址.

(4)散列存储结构

也叫哈希存储结构,具体存储地址根据关键字通过哈希函数直接计算出来.

3.数据的操作

创建,增删改查,遍历,销毁

2.算法

1.算法的概念

算法是有穷规则的集合,其规则确定一个解决某一特定类型问题的指令序列,每一条指令表示计算机的一个或多个操作.

特点:

(1)有穷性

(2)确定性

(3)可行性

(4)有输入

(5)有输出

算法建立在数据结构之上. 对数据结构的操作需要使用算法来描述. 算法的设计依赖于数据的逻辑结构,算法的实现依赖于存储结构

2.算法举例

根据用户输入值查找角标

 
  
 
  
package com.njaccp.hashMap;
import java.util.Scanner;
/**
 * My8_12_1
 *
 * @author 孟晨旭
 * @version 1.0
 * @description
 * @date 2022/8/12 8:30
 */
public class My8_12_1 {
    public static void main(String[] args) {
//        根据用户输入值,返回角标
        int [] array = {1,2,32,43,564,312,456,3,32,97};
//        请用户输入要查找的值
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要查的值:");
        int number = scanner.nextInt();
//        遍历数组
        int n = array.length,i=0;
        while(i<n&&array[i]!=number){
            i++;
        }
        if(i<n){
            System.out.println("您要查找的数字对应的角标为:"+i);
        }else {
            System.out.println("没能找到您输入的元素");
        }
    }
}

设计算法求两个数的最大公约数

 
  
 
  
package com.njaccp.hashMap;
import java.util.Scanner;
/**
 * My8_12_3
 *辗转相除法求最大公约数
 * @author 孟晨旭
 * @version 1.0
 * @description
 * @date 2022/8/12 15:57
 */
public class My8_12_3 {
//
    public static void main(String[] args) {
//        用户输入两个数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入两个数:");
        int number1 = scanner.nextInt();
        int number2 = scanner.nextInt();
//        计算最大公约数的方法
        My8_12_3 my8_12_3 = new My8_12_3();
        int i = my8_12_3.maxPublicNumber(number1, number2);
        System.out.println("最大公约数为:"+i);
    }
    private int maxPublicNumber(int number1, int number2) {
        while (number1%number2!=0){
            int i = number1%number2;
            number1 = number2;
            number2 = i;
        }
        return number2;
    }
}

3.算法分析

(1)时间复杂度:指算法的执行时间随问题规模的变化而变化的趋势,反映算法执行时间的长短 .

(2)空间复杂度:算法执行时所占用的额外空间随问题规模变化而变化的趋势.

3.泛型方法

1.使用Object表示范型

2.使用Comparable接口表示泛型

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值