排序算法
文章平均质量分 58
算法 排序
@一头雾水@
这个作者很懒,什么都没留下…
展开
-
最长公共子串
给出1个字符串,找到最长且重复出现的子串,并返回其长度。给出2个字符串,找到最长公共子串,并返回其长度。原创 2023-12-12 16:44:34 · 65 阅读 · 0 评论 -
排序算法 总代码
【代码】排序算法 总代码。原创 2023-12-12 16:36:59 · 54 阅读 · 0 评论 -
排序算法 基数排序
一、基数排序1、介绍。 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,...原创 2019-10-20 22:52:08 · 14097 阅读 · 0 评论 -
排序算法 计数排序(普通计数排序、桶排序)
将区间[0, 1)划分为n个大小相等的子区间(桶),每桶大小1/n:[0, 1/n), [1/n, 2/n), [2/n, 3/n),…计数排序的基本思想是对于给定的输入序列中的每一个元素x,确定该序列中值小于x的元素的个数(此处并非比较各元素的大小,而是通过对元素值的计数和计数值的累加来确定)。当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序(基于比较的排序的时间复杂度在理论上的下限是O(n*log(n)), 如归并排序,堆排序)。原创 2019-10-20 12:47:13 · 15444 阅读 · 1 评论 -
排序算法 归并排序(普通归并排序、自然归并排序)
自然归并排序:对于初始给定的数组,通常存在多个长度大于1的已自然排好序的子数组段.例如,若数组a中元素为{4,8,3,7,1,5,6,2},则自然排好序的子数组段有{4,8},{3,7},{1,5,6},{2}.用一次对数组a的线性扫描就足以找出所有这些排好序的子数组段.然后将相邻的排好序的子数组段两两合并,构成更大的排好序的子数组段({3,4,7,8},{1,2,5,6}).继续合并相邻排好序的子数组段,直至整个数组已排好序。(1)申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列。原创 2019-10-19 14:55:38 · 15795 阅读 · 3 评论 -
排序算法 插入排序(直接插入排序、折半插入排序、希尔排序)
所谓折半比较,就是在插入A[i]时,取A[i-1/2]的关键码值与A[i]的关键码值进行比较,如果A[i]的关键码值小于A[i-1/2]的关键码值,则说明A[i]只能插入A[0]到A[i-1/2]之间,故可以在A[0]到A[i-1/2-1]之间继续使用折半比较;(1)计算 0 ~ i-1 的中间点,用 i 索引处的元素与中间值进行比较,如果 i 索引处的元素大,说明要插入的这个元素应该在中间值和刚加入i索引之间,反之,就是在刚开始的位置 到中间值的位置,这样很简单的完成了折半;(2)设置开始查找的位置j;原创 2019-10-19 14:47:06 · 16890 阅读 · 3 评论 -
排序算法 交换排序(冒泡排序、快速排序)
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。(2)对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。原创 2019-10-19 14:45:42 · 15361 阅读 · 2 评论 -
排序算法 选择排序(简单排序、堆排序)
依次类推,共需要进行的比较次数是(n-1)+(n-2)+…+2+1=n(n-1)/2,即进行比较操作的时间复杂度为O(n^2),进行移动操作的时间复杂度为O(n)。该趟排序从当前无序区中-选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R[i+1..n)分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区;时间复杂度,最佳情况:O(n^2) 最差情况:O(n^2) 平均情况:O(n^2)。------开始------------结束------原创 2019-10-18 17:22:56 · 15704 阅读 · 5 评论