【数据结构】排序

插入排序

把当前遍历到的元素前的元素序列是排好序的,把当前元素放到前边的序列中进行排序。

直接插入排序

不带哨兵

void InsertSort(int A[],int n)
{
int i,j,temp;
for(i=1;i<n;i++)
if(A[i]<A[i-1])
{
temp=A[i];
for(j=i-1;j>=0 && A[j]>temp;--j)
A[j+1]=A[j];
A[j+1]=temp;
}
}

带哨兵

在这里插入图片描述
数组第一个元素为哨兵,记录当前要排序的元素,也充当了temp的作用

折半插入排序

在这里插入图片描述
有个疑问,带哨兵变量的直接插入排序循环中,为什么不需要判断j>0

希尔排序

在这里插入图片描述

  • for(i=d+1;i<=n,++i)第一趟遍历,指向第一个子表中的第二个元素A[d+1]
  • 按照直接插入排序的规则,比较当前指向的元素和其前面一个元素之间的大小关系if(A[i] < A[i-d])
  • 判断子表元素是否有序,如果有序就直接开始下一轮循环i++
  • 如果不是有序的,则使用带哨兵的直接插入排序的方法,进行排序
    在这里插入图片描述

交换排序

冒泡排序

第一趟排序使关键字最小的一个元素排到最前面,王道视频中是从后向前遍历的,并且保持的是升序序列。
在这里插入图片描述只有A[j-1]>A[j]时才会交换,保证了算法的稳定性。
在这里插入图片描述
在这里插入图片描述

快速排序

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

选择题整理总结

1.在排序过程中,每趟都能确定一个元素在其最终位置有冒泡排序、简单选择排序、堆排序、快速排序,前三者能形成全局有序的子序列,后者能确定枢轴元素的最终位置。
2.基于插入、交换、选择的三种排序方法中,通常简单方法是稳定的,但是简单选择排序是例外,复杂的方法都是不稳定的。
3.插入排序的核心:将待插入元素插入前面的有序字表

  • 确定的当前记录在前面有序子表中的位置,直接插入排序采用顺序查找法
  • 折半插入排序采用折半查找法

排序的趟数:n-1
元素的移动次数取决于初始序列,两者相同
使用的辅助空间数量O(1)
折半插入排序的比较次数和初始序列无关,为O(nlogn)
直接插入排序的比较次数和初始序列有关,为O(n)~O(n^2)

4.对于n个不同元素利用冒泡法从小到大排序,在从大到小情况下元素交换次数最多
对于一个逆序的序列进行冒泡排序,需要进行比较n(n-1)/2
5.(D)

这里是引用

看条件想到基数排序,假设对一些两位数排序,个位是k1,十位是k2,则不符合基数排序。基数排序,先排个位时,是小的在后
所以应该是个位是k2,十位是k1,先k2再k1,对k1应该使用稳定的排序算法。k1直接插入排序是稳定的,选D
6.(C)(C)

这里是引用
在这里插入图片描述

7.选择排序在排序过程中比较次数与序列的初始状态无关,(n-1)n/2
8.归并排序在一趟结束后不一定能选出一个元素放在其最终位置上
9.归并排序在排序过程中的比较次数的数量级与序列的初始状态无关
10.对N个元素进行k路归并排序,排序的趟数m=cell(logk(N))
11.很重要的表
在这里插入图片描述

12.在元素基本有序的情况下,使用插入排序,排序过程中元素比较次数最少
13.(C)

这里是引用

14.基数排序的元素移动次数与关键字的初始排列顺序无关
15.(D)

这里是引用

堆排序和希尔排序都用到了顺序存储的随机访问的特性,链式存储不支持
16.(A)

这里是引用

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络安全系统教程+学习路线(自学笔记)

一、什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面…

34岁上岸,我终于圆了自己的考研梦

​ 大家好&#xff0c;我是独孤风&#xff0c;一位曾经的港口煤炭工人&#xff0c;目前在某国企任大数据负责人&#xff0c;公众号大数据流动的作者。 ​ 虽然告诉自己要平静&#xff0c;但是当接到EMS录取通知书的那一刻&#xff0c;眼眶还是忍不住有些湿润。今年正好是是东北…

青岛大学_王卓老师【数据结构与算法】Week03_04_线性表的链式表示和实现4_学习笔记

本文是个人笔记&#xff0c;仅用于学习分享&#xff0c;素材来自青岛大学王卓老师的教学视频&#xff0c;如有侵权&#xff0c;请留言作删文处理。 视频链接&#xff1a; 数据结构与算法基础–第3周04–2.5线性表的链式表示和实现4–单链表基本操作2–销毁单链表 &#x1f4…

Linux——进程的概念

task_struct task_struct 是linux下管理进程的结构&#xff0c;称为PCB&#xff0c;进程控制块。linux所有的指令本质上都是一个进程。进程 task_struct 进程的数据、代码、可执行程序&#xff0c;有属性、有内容。 进程是系统的工作单元。系统由多个进程组成&#xff0c;包…

ChatGPT在物流与运输行业的智能场景:智能调度和自动驾驶的前瞻应用

第一章&#xff1a;引言 随着人工智能技术的飞速发展&#xff0c;物流与运输行业正迎来一场革命。传统的调度和运输模式已经无法满足快速增长的物流需求和客户期望。在这一领域&#xff0c;ChatGPT作为一种先进的自然语言处理模型&#xff0c;具有巨大的潜力。本文将探讨ChatG…

第三十五章Java面向对象概念及封装、继承、多态三种特性详解

面向对象简称 OO&#xff08;Object Oriented&#xff09;&#xff0c;20 世纪 80 年代以后&#xff0c;有了面向对象分析&#xff08;OOA&#xff09;、 面向对象设计&#xff08;OOD&#xff09;、面向对象程序设计&#xff08;OOP&#xff09;等新的系统开发方式模型的研究。…

ECC加密算法详解+python实现

一.前言 目前比较受欢迎的加密算法一共存在两种&#xff0c;一种是基于大整数因子分解问题&#xff08;IFP&#xff09;的RSA算法和基于椭圆曲线上离散对数计算问题&#xff08;ECDLP&#xff09;的ECC算法。之前对RSA算法进行过很详细的讲解&#xff0c;但是ECC加密算法还没有…

数据库的操作

前言 在之前的文章中&#xff0c;我们已经了解了什么是数据库&#xff0c;以及为什么有数据库&#xff0c;和数据库有什么作用&#xff0c;有了这些宏观概念之后&#xff0c;本章为大家进一步详细介绍对于数据库在Linux上如何具体操作。 1.创建数据库 1.1创建数据库语法 语法…

第十二章 EfficientNetv2网络详解

系列文章目录 第一章 AlexNet网络详解 第二章 VGG网络详解 第三章 GoogLeNet网络详解 第四章 ResNet网络详解 第五章 ResNeXt网络详解 第六章 MobileNetv1网络详解 第七章 MobileNetv2网络详解 第八章 MobileNetv3网络详解 第九章 ShuffleNetv1网络详解 第十章…

【线程池】史上最全的ThreadPoolExecutor源码详解

目录 一、线程池框架 1.1 第一层结构 1.2 接口简介 1.3 核心实现类 1.4 辅助类 1.5 完成服务 二、ThreadPoolExecutor的成员属性和内部类 2.1 主要成员属性以及工具方法 2.2 五种内部类 2.2.1 拒绝策略内部类&#xff08;Policy&#xff09; 2.2.2 工作线程内部类&a…

HHU云计算期末复习(下)Hadoop、虚拟化技术、openstack

文章目录 第五章 Hadoop分布式文件系统HDFS分离元数据和数据&#xff1a;NameNode和DataNode流水线复制 第七章 虚拟化技术7.1 虚拟化技术简介7.2 虚拟机迁移7.3 网络虚拟化 第八章 openstack8.1 计算服务NovaRabbitMQ 8.2 Swift 第九章 云计算数据中心9.1 云数据中心特征9.2 网…

【MySQL数据库】MySQL 高级SQL 语句一

[TOC](MySQL 高级SQL 语句 一、MySQL 高级SQL 语句1.1select -显示表格中一个或数个字段的所有数据记录1.2distinct不显示重复的数据记录1.3where有条件查询1.4and、or且 或1.5in 显示已知的值的数据记录1.6between 显示两个值范围内的数据记录1.7通配符&#xff0c;通常通配符…

一文了解云计算

目录 &#x1f34e;云服务 &#x1f34e;云计算类型 &#x1f352;公有云 &#x1f352;私有云 &#x1f352;混合云 &#x1f34e;云计算服务模式 &#x1f352;IaaS基础设施即服务 &#x1f352;PaaS平台即服务 &#x1f352;SaaS软件即服务 &#x1f352;三者之间区别 &…

回波数据adc_data.bin解析(附MATLAB程序)

毫米波雷达系统性能参数分析 1、xWR1642—DCA1000 TI目前有两款采集卡TSW1400和DCA1000&#xff0c;可以为xWR1243/1443和1642毫米波雷达进行回波数据采集。本文将主要介绍几款雷达分别用2款采集卡数据采集的回波数据格式以及MATLAB数据解析程序。 1、xWR1642—DCA1000 &…

打造专属个人模型-私有独立离线模型部署-阿里云GPU服务器配置

阿里云有免费的机器学习 GPU 服务器&#xff0c;免费试用活动页https://free.aliyun.com只要没有申请过 PAI-DSW 资源的新老用户皆可申请 5000CU 的免费额度&#xff0c;3个月内使用。 选择第一个进行立即试用 可以看到试用的界面 如果遇到下面的错误&#xff0c;当前账号没有权…

蓝桥杯专题-试题版-【数字游戏】【城市建设】【最大子阵】【蚂蚁感冒】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

基于SpringBoot+vue的职称评审管理系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

基于SpringBoot的家庭理财记账系统的设计与开发

1.引言 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个…

CaffeineCache+Redis 接入系统做二层缓存思路实现(借鉴 mybatis 二级缓存、自动装配源码)

本文目录 前言本文术语本文项目地址设计思路开发思路DoubleCacheAble 双缓存注解&#xff08;如何设计&#xff1f;&#xff09;动态条件表达式&#xff1f;例如&#xff1a;#a.id?&#xff08;如何解析&#xff1f;&#xff09;缓存切面&#xff08;如何设计&#xff1f;&…

二十三种设计模式第十二篇--组合模式

组合模式是一种结构型设计模式&#xff0c;它允许将对象组合成树形结构来表示整体-部分的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 在组合模式中&#xff0c;有两种类型的对象&#xff1a;叶子对象和组合对象。叶子对象表示树结构中的叶子节点&…