![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
Heroin_s
我得离开我的沙发
展开
-
排序算法之归并排序算法优化
之前写了一篇介绍排序算法的排序算法之插入排序、希尔排序、归并排序(C#),发现计算数组的逆序对,我的算法速度比别人要慢很多倍。下面来分析一下为什么这两种归并算法会相差那么多。第一种慢速归并算法,代码如下 /// <summary> /// 归并排序 /// </summary> /// <returns></returns> public int[] MergeSort(int[] arra原创 2020-07-13 20:37:26 · 334 阅读 · 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 · 516 阅读 · 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 · 232 阅读 · 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 · 264 阅读 · 0 评论 -
排序算法之计数排序、桶排序、基数排序
计数排序计数排序就是找出数组中的最大、最小值。然后创建一个存储最大至最小元素出现个数的数组。遍历存储所有待排序数组元素。按序输出就是排序后的数组了。代码如下 public void CountingSort(int[] nums) { //查找数组中的最大最小值 int min = int.MaxValue; int max = int.MinValue; for (int i = 0原创 2020-07-08 16:34:41 · 138 阅读 · 0 评论