经典的各种排序大家都听过,但是相信各位铁汁都对各种排序的性能都很好奇,大家都有心中自己的看法今天来彻底对比一下谁究竟才是排序性能 TOP1
前面我们的实现过程大部分都是比较排序,不知道大家听说过非比较排序计数排序?它的性能再某些场景甚至能达到惊人的 O(N)
归并排序的思想上我们已经全部介绍完了,但是同时也面临和快速排序一样的问题那就是递归消耗的栈帧空间太大了,所以对此我们必须掌握非递归的排序思想。
归并算法是我们算法中最常见的算法之一,其思想非常巧妙。本身归并是只能归并有序数组但是当我们利用了二路归并分治法之后,就可以使用归并的思想来帮我们排序其算法性能属于第一梯队
递归来实现快排虽然很简单但是堆栈还是有所消耗,在有些场景限制递归深度的时候,例如在嵌入式系统或对递归深度有限制的环境中,非递归就是我们必须掌握的了使得我们的算法可以应用于各种场景
快速排序是一种基于分治思想的高效排序算法,由Tony Hoare于1960年提出。它的核心思想是通过选择一个基准元素,将数组划分成两个子数组,使得左边的子数组元素都小于基准,右边的子数组元素都大于基准,然后对这两个子数组分别进行递归排序。
直接选择选择排序也是八大排序之一的排序算法,虽然实际应用上其实并不会选择它来进行排序,但它的思想和价值还是十分值得我的去学习的!
希尔排序,不知道大家有没有感觉听起来都很吊吊的样子。事实也确实如此,希尔排序的性能在八大排序中某些特定情况是最强的,也是我们必学的高效算法之一。
插入排序八大排序之一是一种非常简单直观的排序算法,尽管插入排序在时间复杂度上并不是最优的选择,但它的思想简单直观,易于实现
堆排序一个基于二叉堆数据结构的排序算法,其稳定性和排序效率在八大排序中也是名列前茅今天就来深度剖析一下堆排序背后的原理与性能
递归思想在二叉树的应用中是一种非常高效且快捷的方法,今天我们就来看一下递归在这类问题的妙用
学习二叉树结构,最简单的方式就是遍历 。而递归算法是二叉树最简单高效的遍历思想
TOP-K问题:即求数据结合中前K个最大的元素或者最小的元素,一般情况下数据量都比较大*比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。
“树” 一种不同于线性表的特殊数据结构,接下来我们就来了解一下树的概念以及几种实现方法。
栈和队列都是线性表中比较特殊的一种,这俩种我们都学了那么用队列实现栈不知道把你难倒了嘛!看完保证你对队列的理解又上一个档次!
队列和栈一样都是一种特殊的线性表,队列具有先进先出FIFO(First In First Out)。这篇文章就来带大家轻松实现队列!
原来实现栈可以如此简单!栈:其实是一种特殊的线性表,其只允许在其尾端进行插入和删除元素操作。
如操作系统课程讲解生产者消费者模型时可以就会使用循环队列。环形队列可以使用数组实现,也可以使用循环链表实现。今天就来带大家快速实现一下
C语言做为我们入门的第一门语言,用来快速上手数据结构是自噩耗不过了。本篇文章用最精华的语言教你快速上手单链表!
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号