数据结构
文章平均质量分 62
总结和归纳一些关于数据结构的相关知识点
ProMer_Wang
一名热衷于电脑游戏、编程的程序猿
展开
-
数据结构:常见的排序算法(一):冒泡排序(C++实现)
常见排序之冒泡排序1.基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。2.算法描述:①每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。依次比较相邻的两个数,将小数放在前面,大数放在后面。②首先比较第1个和第2个数,将小数放前,大数放后;然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。③重复第一轮的步骤,直至全部排序完成3.举例:例1原创 2020-08-11 16:38:08 · 2682 阅读 · 0 评论 -
数据结构:常见的排序算法(二):直接插入排序(C++实现)
数据结构之常见的排序算法(二):直接插入排序插入排序:1.思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置,直到全部插入排序完为止。2.关键问题:在前面已经排好序的序列中找到合适的插入位置。方法: 分为 直接插入排序 、二分插入排序、希尔排序直接插入排序1.基本思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置(从后向前找到合适位置后),直到全部插入排序完为止。(是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表原创 2020-08-20 21:34:40 · 919 阅读 · 1 评论 -
数据结构:常见的排序算法(三):二分插入排序(C++实现)
数据结构:常见的排序算法(三):二分插入排序插入排序:1.思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置,直到全部插入排序完为止。2.关键问题:在前面已经排好序的序列中找到合适的插入位置。方法: 分为***直接插入排序***、二分插入排序、希尔排序二分插入排序1.基本思想:基本思想:二分法插入排序的思想和直接插入一样,只是找合适的插入位置的方式不同,这里是按二分法找到合适的位置,可以减少比较的次数。二分法插入排序,简称二分排序,是在插入第i个元素时,对前面的原创 2020-08-19 19:08:36 · 2956 阅读 · 0 评论 -
数据结构:常见的排序算法(四):希尔排序(C++实现)
数据结构:常见的排序算法(四)-希尔排序插入排序:1.思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置,直到全部插入排序完为止。2.关键问题:在前面已经排好序的序列中找到合适的插入位置。方法: 分为***直接插入排序***、二分插入排序、希尔排序希尔排序1.基本思想:希尔排序又叫“缩小增量排序”,先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序,然后取第二个增量d2。其是插原创 2020-08-19 19:46:25 · 930 阅读 · 0 评论 -
数据结构:常见的排序算法(五):堆排序(C++实现)
数据结构:常见的排序算法(五):堆排序堆排序是一种树形选择排序,是对直接选择排序的有效改进。堆是一种特殊的树形数据结构,即完全二叉树。堆分为大根堆和小根堆,大根堆为根节点的值大于两个子节点的值;小根堆为根节点的值小于两个子节点的值,同时根节点的两个子树也分别是一个堆。堆的定义下:具有n个元素的序列 (h1,h2,…,hn),当且仅当满足(hi>=h2i,hi>=2i+1)或(hi<=h2i,hi<=2i+1) (i=1,2,…,n/2)时称之为堆。在这里只讨论满足前者条件的堆。由原创 2020-08-20 22:14:23 · 3588 阅读 · 2 评论 -
数据结构:常见的排序算法(六):快速排序(C++实现)
数据结构:常见的排序算法(六):快速排序1.基本思想:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一轮扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分,直到各区间只有一个数。2.实例示例:数组a[15]={3,44,38,5,47,15,36,26,2,46,4,19,50,48}通过快速排序进行排序图片来源:https://www.cnblogs.com/zwtgyh/p/106原创 2020-08-20 23:01:19 · 266 阅读 · 0 评论 -
数据结构:常见的排序算法(七):基数排序(C++实现)
数据结构:常见的排序算法(七):基数排序1.基本思想:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。2.实例实例代码:#include<iostream>using namespace std;//辅助函数,求数据的最大位数int maxbit(int data[], int n){ int maxData = data[0];原创 2020-08-21 09:00:01 · 322 阅读 · 0 评论 -
数据结构:常见的排序算法(八):归并排序(C++实现)
数据结构:常见的排序算法(八):归并排序(1)基本思想:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序中第二步,对两个有序数组排序法则非常简单,同时对两个数组的第一个位置比较大小,将小的放入一个空数组,然后被放入空数组的那个位置的指针往后移一个,然后继续和另一个数组的上一个位置进行比较,以此类推。直到最后任何一个数组先出栈完,就将另外一个数组里的所有元素追加到新数组后面。原创 2020-08-25 14:03:13 · 404 阅读 · 0 评论 -
数据结构:两个栈实现一个队列(以及两个队列实现一个栈)
数据结构栈、队列之栈和队列的互相实现1.两个栈实现一个队列#include<iostream>#include<queue>#include<assert.h>using namespace std;class Stack{public: //1.添加元素 void push(int n); //2.移除栈顶的元素 void pop(); //3.判断栈是否为空 bool empty(); //4.返回栈顶的元素 int top(); /原创 2020-08-13 16:49:09 · 346 阅读 · 0 评论