
算法
醉如泥
GO GO GO
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉树各种遍历方式(递归与非递归)
二叉树简述 1、第i层至多有2的i-1次方个结点;2、深度为k的二叉树至多有2^(k)-1个结点;3、叶子结点个数为n,双结点个数为m,则 n= m+14、递归遍历方式代码简单,效率低;非递归遍历方式代码较复杂,效率高5、层序遍历需要借助(queue)实现,前、中、后序遍历需借助栈(stack)实现。 节点定义 typedef struct N...原创 2018-09-16 16:59:51 · 755 阅读 · 0 评论 -
任意进制转换—C++实现
#include<iostream>using namespace std;int main(){ long n = 0; //待转换的数字 int x = 0; //进制 int a = 0; //转换后的单位字符 int m = 0; //转换后的位数 int s[100]; //转换后字符串 cin >> n >> x; while (n!=0)...转载 2020-05-21 21:19:46 · 471 阅读 · 1 评论 -
计数排序
计数排序 适用场合:数据范围小,数据集中排序思想:使用数组来统计每个数字出现的次数时间复杂度:O(n);稳定性:稳定代码实现:void count_sort(int *array, int length, int min, int max){ int *count = NULL...原创 2016-04-22 22:25:20 · 261 阅读 · 0 评论 -
归并排序
归并排序排序思想:(分治思想)先将整个集合进行递归拆分,拆到一个数据的时候开始返回,然后进行合并返回;时间复杂度: o(n * (log n / log 2) )稳定性: 稳定//归并排序接口函数void merge_sort(int *array, int len...原创 2016-04-22 22:10:05 · 347 阅读 · 0 评论 -
快速排序
快速排序排序思想:1.首先选定一个标志值(一般选第一个)value,比其大的放在右边,比其小的放在左边; 2.再分别递归处理value左边和右边的集和; 3.begin与end相等表示结束...原创 2016-04-22 21:41:06 · 258 阅读 · 0 评论 -
shell排序
shell 排序(减小缩量排序)稳定性:不稳定排序思想:将多个数据集先进行分组,再对每组集和进行插入排序。(gap表示分的组数目,(gap-1)可表示每组数据的间隔)实现代码://从小到大排序void shell_sort(int *array, int length)...原创 2016-04-21 22:25:28 · 367 阅读 · 0 评论 -
直接选择排序
选择排序时间复杂度:O(n^2),不稳定。思想:初始情况:有序空间为空,无序空间为整个待排空间。过程:每次从无序空间取出一个最小值和无序空间第一个元素进行交换,然后缩小无序区间,直到无序区间只剩一个元素代码:void select_sort(int *arr...原创 2016-04-21 22:24:26 · 238 阅读 · 0 评论 -
直接插入排序
直接插入排序排序思想:将一个数据集和看作一个无序区间和一个有序区间。每次从无序区间取出第一个值,插入到有序区间的确定位置 直到无序区间为空。注意:初始状态,将待排序区间的第一个元素作为有序空间,剩下的作为无序区间时间复杂度:O(N^2)代码实现:...原创 2016-04-21 22:17:02 · 291 阅读 · 0 评论 -
优化的冒泡排序法
一、优化的冒泡排序1、思路:如果说在某次比较过程中,没有发现交换的过程,说明当前的序例已经是排好序的。 flag == 1 表示有交换过程 flag == 0 表示已排序完成2、代码实现:void bubble_sort1(int *array, int length){ int j =...原创 2016-04-21 22:04:47 · 492 阅读 · 0 评论 -
堆排序
堆排序排序思路:(1)创建一个堆;(借助队列,按层创建) (2)交换跟节点和最后一个叶子节点的值,在大堆中排除该叶子节点,再将 剩余的二叉树调整成大根堆; (3)重复步骤2,直至二叉树中只有一个节点//实现代码:...原创 2016-04-21 21:43:13 · 250 阅读 · 0 评论