6.数据结构期末复习之查找和排序1

news2024/11/19 16:55:47
  1. 概念
  1. 静态查找: 无插入和删除
    动态查找: 边插入删除边查找
  2. 静态和动态查找的实现方式
    1.线性表: 静态查
    2.树表(二叉排序树)动态查
    3.散列表 静态动态都可以
  3. 查找: 集合中查找满足条件的数据
  4. 关键码
    1.主关键码:可以表标识数据唯一性
    2.次关键码: 不能标识
  5. 查找效率: 比较次数决定的,
  6. 平均查找效率: ASL=求和(i出现的概率*查i需要的比较次数[只有这个可以控制])

2.顺序查找(从头到尾,从尾到头)

  1. 改进设置哨兵
  2. 优点 代码简单,用得广,数据不用有序
    缺点: 元素多时,慢,不用他

在这里插入图片描述
3.折半查找(别名,对半,二分查找)!!!有序的顺序表,取中间 比较两边;!!!不用哨兵比较容易理解
//每次除的时候是[xxx,xx) 相加起来/2

在这里插入图片描述

//也可以用递归实现,结束条件 low>high
4.折半查找判断树(以上面的为例)(二叉排序树)
在这里插入图片描述
//时间由深度决定,求二叉(折半)查找判定树,根据某个元素的深度,得到他的查找次数
在这里插入图片描述
ASL平均查找长度为: ASL=(11+22+34+44)/10
查找失败时平均查找长度为: (记得看层数每一层节点数)(自己补上失败的节点)ASL=34/11=12/11=1

5.树表之二叉排序树(边插入边查)

1.存储:二叉链表

在这里插入图片描述

2.中序:可写出升序序列
3.二叉排序树的插入,自己构造二叉排序树(一个节点一个节点插入,先从根节点开始一一判断节点值)
在这里插入图片描述
6.平衡二叉树(解决左右树高的差值>1,通过转换变为最大高度差为1的二叉树)

7.散列查找(查找专用) (之前是用比较放位置,现在直接由数据运算得到数据的地址)

  1. 概念
    1.散列表:数组+使用散列函数来实现查找
    2.散列函数:封装了 由数据技术得出数据地址的函数
    3.同义词 比如 10%7=3 17%7=3(散列函数的部分实现) 所以10和17是同义词会导致冲突!!!
  2. 方式
    1.直接定址法(直接由数据得到地址比如) 10/10=1 存到下标为1的数组
    2.平方取中法: 如 (12)^2=144 我取 4(中间部分)为地址
    3.除留余数法(实用) 要取小于表长的最小素数(就是要不可分解,比如 13只能分解为1和13)
    如: 1%13=1 ; 13%13=0; //不会下标超过数组长度
    4.(解决冲突的方法)开放定址法: 如果冲突那么,去放到冲突元素的下一位
    5.(解决冲突的方法)二次探测法: 如果冲突 那么和4一样,就是跳跃的距离是 1^2 2^2
    3^3…, 比如 10%10=0 已经冲突了 第一次我去下一个元素,第二次我去4的下标探测…
    6.拉链法: 数组+单链表, 如果这个数组下标被放 了元素,我直接放到链表里面

下面使用线性探测法解决冲突
在这里插入图片描述
//另外一个例子,如果探测后面都冲突了,需要重新从头开始探测, %的魅力
在这里插入图片描述
----------排序算法--------------
8.插入排序

  1. 直接插入排序(无序区的元素插入有序区中,有序插入元素以后,数组需要后移)

在这里插入图片描述

  1. 希尔排序(直接插入的优化,也是插入,但是元素的距离,相当于一个数组看成多个数组来排序)

在这里插入图片描述
9.交换排序

  1. 冒泡(起泡)排序(相邻元素相互比较,最大的元素/最小的元素 向后面跑)(优化,如果移动的位置与上一趟相同,退出循环)

在这里插入图片描述

2.快速排序(冒泡排序的优化) c语言类库常用算法(本质是, 小<轴<大,两个指针在左和右边,遇到可以和轴可以交换的就交换)

在这里插入图片描述
//核心轴值不变,交换轴改变
在这里插入图片描述

动画 https://www.bilibili.com/video/BV1rW4y1x7Kh/?spm_id_from=333.337.search-card.all.click&vd_source=a50956e86b1f1bd61ba2abf42b71ff61

10.选择排序
1.简单选择排序(直接我从头遍历,得到最小的元素) 趟数=有多少个元素-1次

在这里插入图片描述
11.归并排序(和MapReduce分而治之的思想一样,先大任务分为小任务,然后小任务一一汇总为一个结果)
1.二路归并排序((n)/2-1趟)
49 38 65 97 76 13 27
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/633277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

八、进程程序替换

文章目录 一、进程程序替换&#xff08;一&#xff09;概念&#xff08;二&#xff09;为什么程序替换&#xff08;三&#xff09;程序替换的原理&#xff08;四&#xff09;如何进行程序替换1. execl2. 引入进程创建——子进程执行程序替换&#xff0c;会不会影响父进程呢? &…

PDF 内容替换器软件工具 PDF Replacer Pro Crack

PDF 内容替换器软件工具 批量查找和替换 PDF 中的指定文本 PDF Replacer 是一款 Windows 软件程序&#xff0c;可在 PDF 文件中查找指定的单词或短语文本并替换为新文本&#xff0c;并保持 PDF 布局不变。 Windows 7/Win 8/Win 10 或更高版本&#xff08;32/64 位&#xff09; …

devart ADO.NET Data Providers 2023

ADO.NET Data Providers 2023 dotConnect 开发与数据相关的 .NET 应用程序的终极解决方案,具有 ORM 支持的快速灵活综合功能丰富的 ADO.NET 提供程序 ADO.NET 数据提供者 高性能 ADO.NET 数据提供程序 dotConnect 是一个增强的数据连接解决方​​案&#xff0c;它建立在 ADO.N…

为什么齐次线性方程组有非零解的充要条件是D=0

下面是对这两个定理的解释&#xff1a; 定理1&#xff1a;如果是齐次线性方程组&#xff08;方程个数未知量个数&#xff09;&#xff0c;且系数行列式D不等于0&#xff0c;则只有0解&#xff1b; 定理2&#xff1a;若齐次线性方程组&#xff08;方程个数未知量个数&#xff…

C语言---形参所导致的段错误

前言 今天刷B站&#xff0c;无意之间看到一个宣称90%人都会错的嵌入式面试题。感兴趣就看了一下。卡了十多分钟才想明白&#xff0c;只是一个小知识点&#xff0c;但还是分享一下。 题目 #include <stdio.h> #include <stdlib.h> #include <string.h>void g…

如何将bootloader和APP程序一次性烧录到单片机中

在做单片机的IAP升级时&#xff0c;通常需要两个程序&#xff0c;一个bootloader程序&#xff0c;一个app程序。首先将bootloader程序烧写到单片机中&#xff0c;然后通过串口将app程序写入到单片机内容&#xff0c;在平时学习和测试的时候这种方法没啥问题&#xff0c;但是如果…

K8S 生态周报| Ingress-NGINX v1.8 发布,升级前请先检查

“ 「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」[1]。 ” 大家好&#xff0c;我是张晋涛。 很抱歉&#xff0c;最近一段时间真的太忙了&#xff0c;写文章都断断续续的。主要在使用 Langchain 搭配 GPT-4 开发…

Nginx扩展篇之Location语法规则

1 Location语法规则 1.1 Location规则 语法规则&#xff1a; location [||*|^~] /uri/ {… } 首先匹配 &#xff0c;其次匹配^~,其次是按文件中顺序的正则匹配&#xff0c;最后是交给 /通用匹配。当有匹配成功时候&#xff0c;停止匹配&#xff0c;按当前匹配规则处理请求。 …

Nginx部署多个前端项目【Linux/Windows-详细操作】

需求:项目上线需要将前端的前台和后台部署在服务器上提供用户进行使用&#xff0c;部署在不同的服务器直接在服务器安装nginx即可。但是在内网安装还是有点麻烦&#xff0c;因为需要联网&#xff0c;如果是内网可以参考Linux安装Nginx并部署前端项目【内/外网-保姆级教程】_MXi…

将数组s中的每个元素的内容在原来的位置上重复n次numpy.char.multiply(s,n)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将数组s中的每个元素的内容 在原来的位置上重复n次 numpy.char.multiply(s,n) 下列代码最后输出的结果是&#xff1f; import numpy as np x np.array([I, have, 2, cats]) print(&qu…

如何看待ICML2023的录用结果?

链接&#xff1a;https://www.zhihu.com/question/597314456 编辑&#xff1a;深度学习与计算机视觉 声明&#xff1a;仅做学术分享&#xff0c;侵删 作者&#xff1a;知乎用户 https://www.zhihu.com/question/597314456/answer/3000946712 不是因为文章被拒&#xff0c;而是因…

一文读懂 Mysql MVCC

&#x1f495;&#x1f495; 推荐&#xff1a;体系化学习Java&#xff08;Java面试专题&#xff09; 文章目录 1、什么是 MVCC2、什么是当前读、快照读3、MVCC 具体解决什么问题4、MVCC 的实现原理4.1、4个隐式字段4.2、undo 日志4.3、Read View 5、使用 MVCC 时&#xff0c;需…

CSS灯光效果,背景黑金效果

先看效果 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>灯光效果</title><link href"https://fonts.googleapis.com/css2?familyCinzel:wght700&amp;dis…

MyBatis 动态sql移除最后的逗号 mybatis trim标签用法 Mybatis 去掉最后的逗号符号

MyBatis 动态sql移除最后的逗号 mybatis trim标签用法 Mybatis 去掉最后的逗号符号 一、概述 在使用MyBatis 写动态sql时&#xff0c;经常会遇到要移除最后多余的 符号 &#xff0c;and &#xff0c; or之类的关键字 &#xff1b; 还有可能需要移除的前缀 where &#xff0c; s…

续-初识JAVaScript---(2)

初识JavaScript ———&#xff08;2&#xff09;&#xff01;&#xff01;&#xff01; 一、关于JavaScript中的数据类型 虽然在JS中的变量在声明的时候不需要指定数据类型&#xff0c;但是在赋值的时候&#xff0c;每一个数据还是有类型的&#xff0c;所以还是需要学习JS中…

c语言第一课---------它来了,它来了,带着薪资走来了

作者前言: 这是我的gitee仓库:https://gitee.com/qin-laoda/python-exercises 有兴趣的小可爱们可以点进去看看,里面有我写的代码我们一起来借鉴 由于本人的自我介绍已经自我介绍过了,在我的的第一篇博客里,有兴趣的小可爱可以去看看, 作者的建议 下面我们简单介绍学好C语言…

【Python】Python进阶系列教程-- Python3 JSON 数据解析(九)

文章目录 前言Python 编码为 JSON 类型转换对应表&#xff1a;JSON 解码为 Python 类型转换对应表&#xff1a;json.dumps 与 json.loads 实例 前言 往期回顾&#xff1a; Python进阶系列教程-- Python3 正则表达式&#xff08;一&#xff09;Python进阶系列教程-- Python3 C…

LLVM 标准 C++ 排序算法

Nature 官网发表《深度强化学习发现更快的排序算法》。 排序或散列这样的基本算法在任何一天都会被使用数万亿次1。随着计算需求的增长&#xff0c;这些算法的性能变得越来越重要 算法已经集成到 LLVM 标准 C排序库中&#xff0c;使用强化学习的新算法替换掉了原有的 LLVM libc…

STM32CubeMX | 44 - 使用GPIO点亮单总线RGBLED

一、单总线RGBLED 1. 硬件连接 在DragonFly上有四个全彩灯相连: 其中RGB_LED连接到STM32的PB9引脚。 2. 单总线通信协议 单总线通信协议中,表示bit0和bit1的码型如下: 时序值如下: 驱动一个单总线RGBLED只需要传输24bit颜色数据即可(MSB,高位优先),格式如下(注意…

OpenGL 冯氏光照模型

1.简介 现实世界的光照是极其复杂的&#xff0c;而且会受到诸多因素的影响&#xff0c;这是我们有限的计算能力所无法模拟的&#xff0c;冯氏光照模型的主要结构由3个分量组成&#xff1a;环境(Ambient)、漫反射(Diffuse)和镜面(Specular)光照。下面这张图展示了这些光照分量看…