排序算法
Heroin_s
我得离开我的沙发
展开
-
排序算法之归并排序算法优化
之前写了一篇介绍排序算法的排序算法之插入排序、希尔排序、归并排序(C#),发现计算数组的逆序对,我的算法速度比别人要慢很多倍。下面来分析一下为什么这两种归并算法会相差那么多。 第一种慢速归并算法,代码如下 /// <summary> /// 归并排序 /// </summary> /// <returns></returns> public int[] MergeSort(int[] arra原创 2020-07-13 20:37:26 · 340 阅读 · 0 评论 -
排序算法之堆排序(C#)
堆排序 所谓堆排序,就是将数组元素组成一个包含左右子节点的树,与之前使用的结构(如下所示相同) public class TreeNode { public int val; public TreeNode left; public TreeNode right; public TreeNode(int x) { val = x; } } 但我们并不是生成一个实体的TreeNode,而是根据数组中元素的位置去判断该元素是叶子原创 2020-07-02 16:25:18 · 526 阅读 · 0 评论 -
排序算法之插入排序、希尔排序、归并排序(C#)
插入排序 两次for循环,外层从数组第二位i=1开始,内层for循环由i向前进行判断,大于则将该位置与遍历位置交换。此时注意,不能按i的位置获取元素,应将该元素暂存,因为交换时对应i位置元素值会变换。 c#代码如下 /// <summary> /// 插入排序 /// </summary> /// <param name="array"></param> public int[] Inser原创 2020-07-01 21:55:10 · 265 阅读 · 0 评论 -
排序算法之选择排序、冒泡排序、快速排序(C#)
打算学习一下排序算法,记录一下方便以后复习。首先介绍一下不同种类的排序算法的复杂度 排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度 冒泡排序 O(n2) O(n2) 稳定 O(1) 快速排序 O(n2) O(n*log2n) 不稳定 O(log2n)~O(n) 选择排序 O(n2) O(n2) 稳定 O(1) 二叉树排序 O(n2) O(n*log2n) 不稳定 O(n) 插入排序 O(n2) O(n2) 稳定 O(1) 堆排序 O(n*log2n)原创 2020-06-30 23:08:52 · 272 阅读 · 0 评论 -
排序算法之计数排序、桶排序、基数排序
计数排序 计数排序就是找出数组中的最大、最小值。然后创建一个存储最大至最小元素出现个数的数组。遍历存储所有待排序数组元素。按序输出就是排序后的数组了。 代码如下 public void CountingSort(int[] nums) { //查找数组中的最大最小值 int min = int.MaxValue; int max = int.MinValue; for (int i = 0原创 2020-07-08 16:34:41 · 149 阅读 · 0 评论