• 数据结构与算法-排序(十)桶排序(Bucket Sort)

    时间:2024-02-29 12:34:10

    摘要桶排序和基数排序类似,相当于基数排序的另外一种逻辑。它是将取值范围当做创建桶的数量,桶的长度就是序列的大小。通过处理比较元素的数值,把元素放在桶的特定位置,然后遍历桶,就可以得到有序的序列。逻辑创建一定数量的桶(数组或者链表)。制定规则将序列中的元素均匀地分布在不同的桶中。然后对每个桶内排序,最...

  • 常见的排序算法整理

    时间:2024-02-22 06:58:39

    1.冒泡排序 1.1 冒泡排序普通版 每次冒泡过程都是从数列的第一个元素开始,然后依次和剩余的元素进行比较,若小于相邻元素,则交换两者位置,同时将较大元素作为下一个比较的基准元素,继续将该元素与其相邻的元素进行比较,直到数列的最后一个元素 .(最后的元素最大,也是最先固定) import java...

  • 个性化排序算法实践(五)——DCN算法

    时间:2024-02-20 21:11:31

    wide&deep在个性化排序算法中是影响力比较大的工作了。wide部分是手动特征交叉(负责memorization),deep部分利用mlp来实现高阶特征...

  • 重学数据结构和算法(五)之归并排序、快速排序

    时间:2024-02-19 14:52:32

    目录归并排序(Merge Sort)归并排序的原理:分治法如何用递归代码来实现归并排序快速排序(Quicksort)代码实现快速排序O(n) 时间复杂度内求无序数组...

  • 用一个测试类简化排序算法时间复杂度的研究

    时间:2024-02-01 15:46:13

    目录一、背景二、概念2.1、时间复杂度的定义2.2、时间复杂度的比较三、测试类3.1、程序结构3.2、测试工具类3.3、 排序算法接口定义3.4、 各种排序...

  • 【数据结构与算法】归并排序

    时间:2024-01-30 21:07:50

    概念过程分解:将n 个元素分成个含n/2 个元素的子序列;解决:对两个子序列递归地排序合并:合并两个已排序的子序列以得到排序结果和快排不同的是归并的分解较为随意重点...

  • 十大经典排序算法最强总结(含Java、Python码实现)

    时间:2024-01-27 20:04:42

    引言所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域...

  • 数据结构与算法:堆排序

    时间:2024-01-27 12:07:51

    堆堆是一个近似完全二叉树完全二叉树)的结构,并同时满足堆积的性质:即子节点的键值或索引总是小于(或者大于)它的父节点。大顶堆:子节点的键值或索引总是小于(或...

  • 经典排序算法详细介绍

    时间:2024-01-26 11:51:00

     时间复杂度渐进时间复杂度(asymptotic time complexity)的概念,官方的定义如下:若存在函数 f(n),使得当n趋近于无穷大时,T(...

  • 干货 | 十大经典排序算法最强总结(内含代码实现)

    时间:2024-01-25 18:38:22

    干货 | 十大经典排序算法最强总结(内含代码实现)一、算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界...

  • 经典排序算法--快速排序

    时间:2024-01-25 17:39:11

    快速排序原理快速排序是基于“分治法”原理实现,所谓分治法就是不断的将原数组序列按照一定规律进行拆分,拆分后各自实现排序直到拆分到序列只剩下一个关键字为止。快速排序首...

  • 决胜经典算法之插入排序

    时间:2024-01-25 12:11:00

    习题答案题目回顾在上一篇文章中,我们以数列从小到大排列为例,讲了选择排序。结尾处的思考题如下:如果要实现从大到小排列,上述代码该做如何修改呢?同样,要解答这...

  • python算法与数据结构-希尔排序(35)

    时间:2024-01-24 21:33:57

    一、希尔排序的介绍希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的记录越来越多,当增量减至1时,整个文件恰被分成...

  • 字符串算法—字符串排序(下篇)

    时间:2024-01-24 11:49:01

    字符串算法—字符串排序(下篇) 本文将介绍3区基数快速排序、后缀排序法。1.  前文回顾在字符串算法—字符串排序(上篇)中,我们介绍了键索引计数法、LSD基数排序、MSD基数排序。但LSD基数排序要求需排序字符串的长度一致;MSD基数排序虽然对字符串的长度没要求,但其递归循环里的每次循环都需要进行很...

  • Java数据结构和算法(三)——冒泡、选择、插入排序算法

    时间:2024-01-23 19:21:18

    上一篇博客我们实现的数组结构是无序的,也就是纯粹按照插入顺序进行排列,那么如何进行元素排序,本篇博客我们介绍几种简单的排序算法。1、冒泡排序这个名词的由来很好理解,一般河水中的冒泡,水底刚冒出来的时候是比较小的,随着慢慢向水面浮起会逐渐增大,这物理规律我不作过多解释,大家只需要了解即可。冒泡算法的运...

  • 【算法与数据结构】Java实现查找与排序-第一部分:查找算法

    时间:2024-01-23 13:24:48

    二分查找 也叫做折半查找,属于有序查找算法。 前提条件:数组数据必须有序,从小到大,或者从大到小都是可以的。 如果是无序的,也可以先进行排序。 但是排序之后,会改变原有数据的顺序,查找出来元素位置跟原来的元素可能是不一样的,所以排序之后再查找只能判断当前数据是否在容器当中,返回的索引无实...

  • 排序算法-冒泡排序

    时间:2024-01-23 11:28:19

    算法简介冒泡排序(Bubble Sort)是一种典型的交换排序算法,持续比较相邻元素,大的挪到后面,因此大的会逐步往后挪,故称之为冒泡。算法描述比较相邻的元素。如果第一个比第二个大(小),就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大(小)的...

  • 算法初级面试题03——队列实现栈、栈实现队列、转圈打印矩阵、旋转矩阵、反转链表、之字打印矩阵、排序矩阵中找数

    时间:2024-01-22 20:44:58

    第一部分主要讨论:栈、队列、数组矩阵相关的面试题 题目一用数组结构实现大小固定的队列和栈 public static class ArrayStack { private Integer[] arr; private Integer size; pub...

  • 数据结构与算法(十二):八大经典排序算法再回顾

    时间:2024-01-22 19:28:50

    文章出自汪磊的博客,未经允许不得转载一、排序的理解提到排序大部分同学肯定第一时间想到int数组的排序,简单啊,所谓排序不就是将int数组按照从大到小或者从小到大排序...

  • C# 十大排序算法

    时间:2024-01-22 07:29:18

    以下是常见的十大排序算法(按照学习和实现的顺序排列): 冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Shell Sort)归并排序(Merge Sort)快速排序(Quick Sort)堆排序(Heap Sort)计数排...