![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
daimadog
这个作者很懒,什么都没留下…
展开
-
数据结构和算法——基础概念
一、数据结构1、什么是数据结构数据结构是研究计算机中数据存储的组织形式(逻辑结构和物理结构),定义且实现对数据相应的高效运算,以提高计算机数据处理能力(目的)的一门科学。 2、数据元素和数据结构类型数据元素是数据存储的基本单位,例如:在商品数据信息中,每一个商品数据就是一个数据元素。商品数据元素由商品名、商品价格、商品编号、商品数量组成。这些项目叫做数据项。数据项中,能起到标识...原创 2019-01-27 14:53:18 · 554 阅读 · 0 评论 -
排序算法——交换排序(冒泡排序、快速排序)
交换排序:利用交换数据元素位置的方法进行排序的方法一、冒泡排序基本思想:将序列中第一个记录与第二个记录比较,若前一个大于后一个,则交换位置。然后比较第二个和第三个,第三个和第四个,以此类推,一轮之后,序列中最大的元素就到了序列最后的位置上。继续进行第2轮,第3轮,第n-1轮。若其中某一轮途中没有元素交换,则证明序列已经排好序,后面的轮次不需要再进行。冒泡排序是稳定的排序。排序过程如图所...原创 2019-02-14 21:17:57 · 1275 阅读 · 0 评论 -
排序算法——归并排序(二路归并)
二路归并的基本思想:将含有n个记录的原始序列看做n个长度1的子序列。从第一个子序列开始,将相邻的两个子序列合并,得到长度为2或1(最后只剩下1个子序列的情况)的子序列。如此重复成对归并,直到序列的长度等于原始序列的长度时为止。基本过程:两个有序序列的合并。排序过程如下图:C++代码://一次二路归并过程//对序列a[0]...a[length-1]进行一次二路归并排序,每个...原创 2019-02-16 18:40:23 · 4270 阅读 · 0 评论 -
排序算法——基数排序
基数排序称桶排序。它按照记录的各位值逐步进行排序。适用于整数类型的排序。基数排序不同于别的排序方法通过比较和交换来排序,它是通过按照桶来分配和收集的方法实现的。基本思想:假设待排序的记录都是m位d进制(不足m位的高位补0)。设置d个桶(0,1,...,d-1)。首先将序列中的记录按照最低位值的大小分配到各个桶中,然后按照桶号的大小收集记录,如果一个桶内有多个记录,按照进桶的先后顺序收集,形成一...原创 2019-02-18 18:05:11 · 447 阅读 · 0 评论 -
排序算法——十大排序算法总结与对比
一、十大排序算法复杂度对比 二、关于排序算法的总结1、基数排序仅仅适用于整型数的排序,一般不与另外的排序方法一起比较。2、关于算法的稳定性:不稳定的算法有 “快希选堆”——快速排序,希尔排序,选择排序和堆排序。3、关于问题的规模(1)数据规模较大时,应该选择平均复杂度较好的算法:优先考虑排序、归并排序、堆排序树形选择排序、希尔排序等。(2)数据规模较小时选择较简单的...原创 2019-02-18 19:40:37 · 988 阅读 · 0 评论 -
排序算法——其他算法(那些不是很常见的排序算法)
一、计数排序基本思想:计数排序的思想和桶排序类似。对于一个给定的序列,统计出序列中比每个数小的个数,就能知道这个数最终在序列中的位置。比如序列[2, 5, 3, 0, 2, 3, 0, 3],序列中比5小的数有7个,那么5在最终的排序序列中就位于第8位(下标为7)。计数排序适用于最大值与最小值相差不大的整数序列的排序。它比快速排序更快,但是不具有普遍适用性。排序过程:现有一个长度为n的待排...原创 2019-02-19 14:53:22 · 311 阅读 · 0 评论 -
排序算法——分类、插入排序
一、排序算法的分类1、稳定排序和不稳定排序稳定排序:关键字相同的记录排序前和排序后的顺序不变。反之则为不稳定排序稳定排序有:直接插入排序,折半插入,冒泡排序,直接选择排序,基数排序,归并排序不稳定排序有:希尔排序,快速排序,堆排序 2、内排序和外排序按排序时记录存储的位置划分。内排序:只使用计算机内存存放待排序记录。包括插入排序、选择排序、交换排序、归并排序和基数排...原创 2019-02-14 14:58:42 · 350 阅读 · 0 评论