摘要: 目录归并排序用途特性null优点与其他排序算法比较的优点缺点算法步骤递归实现时间/空间复杂度分析非递归实现归并与快排的区别 归并排序 归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序 阅读全文
posted @ 2024-08-06 22:59 HJfjfK 阅读(18) 评论(0) 推荐(1) 编辑
摘要: 目录希尔排序概述优缺点算法步骤代码实现 希尔排序 概述 希尔排序,也称递减增量排序算法,也称缩小增量排序,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率; 阅读全文
posted @ 2024-08-06 21:50 HJfjfK 阅读(12) 评论(0) 推荐(1) 编辑
摘要: 目录快速排序快速排序要解决的几个问题算法步骤递归法空间复杂度: log2(n)1. hoare法基本原理时间复杂度分析代码实现1优化一 三数取中代码实现逻辑测试三数取中优化版本快排优化二 小区间优化代码实现测试2. 挖坑法3. 前后指针法4. 三路排序算法背景概念适用说明实现思路代码实现非递归版本为 阅读全文
posted @ 2024-08-06 20:48 HJfjfK 阅读(11) 评论(0) 推荐(1) 编辑
摘要: 目录堆排序堆排序的好处:算法步骤代码实现时间复杂度分析 堆排序 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法 阅读全文
posted @ 2024-08-06 19:03 HJfjfK 阅读(7) 评论(0) 推荐(1) 编辑
摘要: 目录直接选择排序描述选择排序的缺点:算法步骤代码实现 直接选择排序 描述 选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了。 选择排序的缺点: 效率低下:选择排序的时间复杂度始终是 𝑂(� 阅读全文
posted @ 2024-08-06 18:02 HJfjfK 阅读(7) 评论(0) 推荐(1) 编辑
摘要: 目录冒泡排序描述冒泡排序的缺点:什么时候最快什么时候最慢特点评价:代码实现 冒泡排序 描述 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经 阅读全文
posted @ 2024-08-06 17:01 HJfjfK 阅读(15) 评论(0) 推荐(1) 编辑
摘要: 目录插入排序描述应用分析时间复杂度空间复杂度算法步骤代码实现 插入排序 描述 插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外 阅读全文
posted @ 2024-08-06 16:00 HJfjfK 阅读(10) 评论(0) 推荐(1) 编辑
摘要: 队列 队列的概念 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特点FIFO(First In First Out) 入队:进行插入操作的一端称为队尾 出队:进行删除操作的一端称为队头 链实栈代码实现 Ququq.h #pragma once #defi 阅读全文
posted @ 2024-08-06 13:05 HJfjfK 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 栈 栈的概念 一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈:栈的删除操作叫做出栈。出 阅读全文
posted @ 2024-08-06 12:04 HJfjfK 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 目录队列队列的概念链实栈代码实现Ququq.hQueue.c 队列 队列的概念 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特点FIFO(First In First Out) 入队:进行插入操作的一端称为队尾 出队:进行删除操作的一端称为队头 链实栈 阅读全文
posted @ 2024-08-06 11:03 HJfjfK 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 目录栈栈的概念顺序栈代码实现Stack.hStack.c 栈 栈的概念 一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的插入操作叫做进栈/ 阅读全文
posted @ 2024-08-06 10:02 HJfjfK 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 目录顺序表概念代码实现动态顺序表SeqLish.hSeqList.c线性表区分 顺序表 概念 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存 储。在数组上完成数据的增删查改。 顺序表一般可以分为: 静态顺序表:使用定长数组存储元素。 动态顺序表:使用动态开辟的数 阅读全文
posted @ 2024-08-06 09:01 HJfjfK 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 目录链表链表的概念链表的分类代码实现无头单向非循环链表SingleLink.hSingleLink.c带头双向循环链表DoubleLink.hDoubleLink.cnull 链表 链表的概念 链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。 阅读全文
posted @ 2024-08-06 08:00 HJfjfK 阅读(12) 评论(0) 推荐(0) 编辑