算法
文章平均质量分 73
Los_kos
BAT
展开
-
十大经典排序(六) —— 复杂度、稳定性及排序方式
十大常见排序排序排序排序最好情况最好情况最好情况最坏情况最坏情况最坏情况平均时间复杂度平均时间复杂度平均时间复杂度空间复杂度空间复杂度空间复杂度排序方式排序方式排序方式稳定性稳定性稳定性插入排序插入排序插入排序O(n)O(n)O(n)O(n2)O(n^2)O(n2)O(n2)O(n^2)O(n2)O(1)O(1)O(1)In−placeIn-placeIn−place稳定稳定稳定希尔排序希尔排序希尔排序O(nlogn)O(nlogn)O(nlogn)O(原创 2021-05-15 10:30:44 · 145 阅读 · 0 评论 -
十大经典排序(五) —— 堆排序
文章目录堆排序堆的概念及性质概念性质堆排序思想图解代码复杂度稳定性堆排序堆的概念及性质概念堆是一种数据结构,是一种树形结构,也叫做二叉堆,通常说的堆,若不加说明指的都是二叉堆性质1、堆是一个完全二叉树,每一个结点的子树也是一个完全二叉树2、堆分为最大堆和最小堆(大根堆和小根堆)①最大堆:每个结点的值都大于等于子结点的值②最小堆:每个结点的值都小于等于子结点的值堆排序思想堆排序是利用堆的概念进行的排序,有两种情况:1、大根堆:每个结点的值都大于等于子结点的值,排序为升序2、小根堆:原创 2021-05-15 10:14:41 · 107 阅读 · 0 评论 -
十大经典排序(四) —— 快速、归并
文章目录1、快速排序思想图解代码复杂度稳定性2、归并排序思想图解代码复杂度稳定性1、快速排序思想通过一趟排序将数据分成两部分,一部分的数据值全部小于关键字,另一部分全部大于或者等于关键字,然后继续将这两部分进行同样操作,直到序列有序图解代码两个函数int Partition(int *a, int low, int high) { int key = a[low]; while (low < high) { while (low < high &a原创 2021-05-09 15:48:54 · 104 阅读 · 0 评论 -
十大经典排序(三) —— 计数、桶、基数
文章目录1、计数排序原理图解代码复杂度稳定性2、桶排序思想图解代码复杂度稳定性3、基数排序思想图解代码复杂度稳定性1、计数排序原理创建一个长度为 k+1 的数组,每个数组的值对应输入数组中数字出现的次数,通过遍历一次输入数组并统计每个元素出现次数,最后遍历输出图解代码void CountSort(int *a, int n) { int i; int k = 0; int minValue = a[0]; int maxValue = a[0]; for原创 2021-05-08 22:10:27 · 350 阅读 · 0 评论 -
十大经典排序(二) —— 冒泡、选择
文章目录1、冒泡排序原理图解代码复杂度稳定性适用性2、选择排序原理图解代码复杂度稳定性适用性1、冒泡排序原理1、从后往前(从前往后)两两比较相邻元素的值,若为逆序,则交换它们,直到序列比较完,称这样的过程为"一趟冒泡排序",最多只需n-1躺排序2、每一趟排序都可以使一个元素的移动到最终位置,已经确定最终位置的元素在之后的处理中无需再对比3、如果某一趟排序过程中未发生"交换",则算法可提前结束图解代码void BubbleSort(int *a, int n) { int i, j,原创 2021-05-06 23:42:38 · 171 阅读 · 0 评论 -
十大经典排序(一) —— 插入、希尔
文章目录前言1、插入排序思想图解直接插入排序原理代码适用性折半插入排序原理&步骤代码适用性复杂度稳定性2、希尔排序原理&步骤图解代码复杂度稳定性适用性前言十大经典排序 —— 前言1、插入排序思想从前向后遍历,将待排序的元素插入前面已经排序好的子序列中,直到全部元素插入完成图解直接插入排序原理顺序查找找到插入的位置代码void InsertSort(int *a, int n) { int i, j, t; for (i = 1; i < n; i原创 2021-05-06 23:27:28 · 143 阅读 · 0 评论 -
BF & KMP算法
文章目录BF算法代码实现:KMP算法KMP next数组实现KMP nextval数组实现结语BF算法暴风(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种暴力算法代码实现:int BF(string S, string T) { int i = 0, j = 0, k原创 2021-05-05 12:20:23 · 105 阅读 · 0 评论 -
十大经典排序 —— 前言
文章目录排序排序是什么?分类内部排序和外部排序稳定排序和不稳定排序比较排序和非比较排序十大常见排序排序排序是什么?排序就是将一个可以是有序的,也可以是无序的序列,重新排列成一个有序的序列排序后的序列可以是递增序列,也可以是递减序列分类内部排序和外部排序内部排序就是在内存储器,也就是在内存中进行的排序外部排序是由于待排序序列数量太大,内存无法存放,只能借助于外存储器进行的排序常用的排序算法都是内部排序稳定排序和不稳定排序如果排序前value1=value2,且相对位置index1<原创 2021-05-06 22:56:02 · 135 阅读 · 0 评论