数据结构与算法邓俊辉——(三)

本文探讨了列表数据结构的基础,包括节点、指针和线性序列的概念,以及如何通过节点的引用访问列表。同时,介绍了两种排序算法——选择排序和插入排序的工作原理和效率。选择排序在每轮选取最大元素,而插入排序则是通过查找合适位置插入元素来逐步建立有序序列。这些算法的理解有助于提升编程能力。
摘要由CSDN通过智能技术生成

列表

  • 从向量到列表,是从静态到动态。

  • 列表的基本组成单位叫做节点node。各节点通过指针或引用彼此联接,在逻辑上构成一个线性序列。前驱、后继。首节点、末节点。

  • 列表改用循位置访问的方式。利用节点的相互引用,找到特定的节点。
    实现:

  • 列表节点是独立地“封装”起来的。ListNode
    在这里插入图片描述

  • 列表的ADT接口
    在这里插入图片描述

  • 列表的C++实现 List
    头尾哨兵不可见
    在这里插入图片描述
    头、首、末、尾的秩分别理解为:-1、0、n-1、n。

排序算法

  • 选择排序:依次在剩余数据中获得最大的那个。然后把最大的那个放到后缀有序子序列的最前端。(原理与起泡排序类似,每次都是选择最大的,但时间复杂度比起泡排序低,因为这是小步慢跑和一步到位的区别)总是将序列分为前缀无序子序列和后缀有序子序列。总体复杂度依然是O(n2)。但元素移动操作远远少于起泡排序。时间复杂度主要来自于元素比较操作。
  • 插入排序:分为前缀有序子序列和后缀无序子序列。从后缀的首元素开始,查找前缀子序列中不大于当前元素的后面一个位置。最好的总体复杂度为O(n),最坏的总体复杂度为O(n2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值