当前位置: 首页 > news >正文

网站编程 外包类型谷歌三件套一键安装

网站编程 外包类型,谷歌三件套一键安装,成都网站建设技术,南昌网站建设品牌本篇将详细讲一下以下排序算法: 直接插入排序希尔排序选择排序快速排序归并排序计数排序 排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某写关键字的大小,按照递增或递减0排列起来的操作。 稳定性的概念…

本篇将详细讲一下以下排序算法:

  1. 直接插入排序
  2. 希尔排序
  3. 选择排序
  4. 快速排序
  5. 归并排序
  6. 计数排序

排序的概念

排序:所谓排序,就是使一串记录,按照其中的某个或某写关键字的大小,按照递增或递减0排列起来的操作。

稳定性的概念

假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变。如一下例子,

5 2 3 4 5 9 8

 经过排序,如果红5和蓝5的相对顺序不对,这就叫稳定,反之则不稳定。

 直接插入排序

直接插入排序的思想:将待排序的记录按其关键码值的大小逐个插入到一个已经排好序的序列中,直到所有的序列为有序序列。

实际中,我们玩扑克牌时,就用到了这样的一个排序算法。

 

时间复杂度: 

直接插入排序时一个稳定的排序,如果有相同的元素,它们的相对位置不会发生变化。它时间复杂度最好的情况下是O(N),当一个数插入到已经排好序的序列中,只需要比较一次就好了。

最坏情况:O(N^2) ,在完全逆序的情况下,要排升序。


希尔排序 

 希尔排序其实和插入排序很像,只不过希尔排序的思想是:先预排序,最后插入排序。

预排序的意义在哪里??

  • 大的数更快到后面去,小的数更快到前面去。gap越大跳的越快,越不有序,当gap =1 时就是插入排序。

 时间复杂度

希尔排序的时间复杂度:大约为O(N^1.3) 


选择排序

选择排序的思想:选择排序可以在一次查找中找到最大的数和最小的数,然后把最大的数放到最后,最小的数放到最前面。

 

时间复杂度

时间复杂度是O(N^2)

稳定性:差 


 快速排序

快排思想:说到排序,或多或少都听过快速排序,快速排序是Hoare于1962年提出的一种二叉树结构的交换方法,其基本思想为:任取待排序元素序列中的某个元素作为基准值,按照该排序吗将待排序集合分割成2个子序列,左序列小于keyi值,右序列大于keyi值,然后重复此方法,最后拍完序。

快速排序一次可以确定一个值在正确的位置上。(这个值就是key值)

	if (begin >= end){return;}int left = begin, right = end;int keyi = left;while (left < right){//先让右边先走while (left<right && a[right]>=a[keyi]){--right;}while (left < right && a[left] <= a[keyi]){++left;}Swap(&a[left], &a[right]);}Swap(&a[keyi], &a[left]);keyi = left;//[begin,keyi-1]  keyi [keyi+1,end]QuickSort(a,begin,keyi-1);QuickSort(a,keyi+1,end);

最常见的就是上面的递归代码,这是Hoare的一种方式实现快排。

Hoare思想:让基准值的右边先走,直到找到比基准值小的数,然后让左边走,直到找到比基准值大的数,然后交换,最后left=right相等的时候,将left位置的值与基准值交换。这样就实现了一次排序。

这里我们想一想快速排序为什么要让基准值的对面开始????

挖坑法: 用一个tmp记录第一个值的坑位,让右边先走,直到找到比坑位小的数,然后让a[right]赋值给坑位,然后把坑位给给right,继续让左边先走,直到找到比坑位大的数,然后把值赋给坑位,让坑位给给left,一直循环。

前后指针法:让prev指向key值,cur指向key值之后的一个值,当a[cur] < a[key] 的时候,就让prev++和cur交换,然后一直循环。


快排的非递归: 快排的思想其实不难发现像一个栈(后进先出),因为快排每次可以确定一个基准值的位置,所以,第一次push进left和right,让他们进行一次排序,就接着push进right和keyi+1,再push进keyi-1和left,注意顺序,因为快排的中间也是一个后进先出的思想。

快排的缺点

 快排其实是有缺点的,因为快排的时间复杂度不一定是O(N*logN),如果排升序,给一个倒序的序列,就有可能达到O(N^2)。所以有了这么一个缺点,就可以做一个三数区中的优化,其实Sort函数中也有这样的处理,而且Sort中还优化了一次快排递归深度过深的时候会用堆排序,在接近有序的时候会用插入排序,而且Sort中只对了右边进行递归处理。如果有兴趣,可以去了解一下Sort的源码,里面有详细解释。


 归并排序

归并排序:它是建立在归并操作上的一种有效的排序算法,该算法采用了分治的思想。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段有序。若将两个有序表合并成一个有序表,称为二路归并。        

归并排序可以看出是一个后序的排序, 先递归,然后从前面开始排好序,然后再memcpy到原数组。

归并排序其实用在解决磁盘外的外排序问题中,如果有下面的场景,归并排序就起到了很大的作用。

时间复杂度

 归并排序也是一种经典的O(N*logN)  空间复杂度是O(N),这时因为开辟了一块tmp临时数组


计数排序 

思想:计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。

步骤:1.统计想相同元素出现的次数

2.根据统计的结果将序列回收到原来的序列中

 计数排序的特性:

  1. 计数排序在数据范围集中时,效率很高,但是使用范围及场景有限。
  2. 时间复杂度:O(MAX(N,范围))
  3. 空间复杂度:O(范围)


文章转载自:
http://wanjiakeratosulphate.wqpr.cn
http://wanjiasoothsay.wqpr.cn
http://wanjiaappellative.wqpr.cn
http://wanjiacoenesthesis.wqpr.cn
http://wanjiaoophore.wqpr.cn
http://wanjiaunmannered.wqpr.cn
http://wanjiasponginess.wqpr.cn
http://wanjiaendville.wqpr.cn
http://wanjiaglug.wqpr.cn
http://wanjiacostean.wqpr.cn
http://wanjiaantecedency.wqpr.cn
http://wanjialambdoid.wqpr.cn
http://wanjiagloam.wqpr.cn
http://wanjiaplowback.wqpr.cn
http://wanjiachalcogen.wqpr.cn
http://wanjiacoagulate.wqpr.cn
http://wanjiaconjunction.wqpr.cn
http://wanjiasyssarcosis.wqpr.cn
http://wanjiadataller.wqpr.cn
http://wanjiaseptennate.wqpr.cn
http://wanjiaradiative.wqpr.cn
http://wanjiacubitus.wqpr.cn
http://wanjiasalvage.wqpr.cn
http://wanjiavolubilate.wqpr.cn
http://wanjiakinaesthesis.wqpr.cn
http://wanjiabenzol.wqpr.cn
http://wanjiacantaloupe.wqpr.cn
http://wanjiatestimonial.wqpr.cn
http://wanjiaexploratory.wqpr.cn
http://wanjiamystagogue.wqpr.cn
http://wanjiatrucklingly.wqpr.cn
http://wanjialaryngoscopical.wqpr.cn
http://wanjiaspathiform.wqpr.cn
http://wanjiaconglobulate.wqpr.cn
http://wanjiaparulis.wqpr.cn
http://wanjiamythologist.wqpr.cn
http://wanjiaallowance.wqpr.cn
http://wanjiarecrimination.wqpr.cn
http://wanjiafluidounce.wqpr.cn
http://wanjiadownwelling.wqpr.cn
http://wanjiamicrosome.wqpr.cn
http://wanjiablobberlipped.wqpr.cn
http://wanjiablankness.wqpr.cn
http://wanjiasaigonese.wqpr.cn
http://wanjiadepredation.wqpr.cn
http://wanjiarheotrope.wqpr.cn
http://wanjiaskulduggery.wqpr.cn
http://wanjiadogface.wqpr.cn
http://wanjiaseeper.wqpr.cn
http://wanjiasimitar.wqpr.cn
http://wanjiafatherhood.wqpr.cn
http://wanjiawatcom.wqpr.cn
http://wanjiacomplementarity.wqpr.cn
http://wanjiaphotocinesis.wqpr.cn
http://wanjiafratry.wqpr.cn
http://wanjianonnegotiable.wqpr.cn
http://wanjiamacular.wqpr.cn
http://wanjiavollyball.wqpr.cn
http://wanjiakeratoderma.wqpr.cn
http://wanjiafisted.wqpr.cn
http://wanjiadysgenic.wqpr.cn
http://wanjiakgr.wqpr.cn
http://wanjiajeer.wqpr.cn
http://wanjiaciliary.wqpr.cn
http://wanjiarubefacient.wqpr.cn
http://wanjiavinegary.wqpr.cn
http://wanjiaapomictic.wqpr.cn
http://wanjiamelomane.wqpr.cn
http://wanjiabeetling.wqpr.cn
http://wanjiacroquet.wqpr.cn
http://wanjiasleepwalker.wqpr.cn
http://wanjiarorqual.wqpr.cn
http://wanjiafirst.wqpr.cn
http://wanjiatoilsome.wqpr.cn
http://wanjiaeuripus.wqpr.cn
http://wanjiaperfoliate.wqpr.cn
http://wanjiainformed.wqpr.cn
http://wanjiainversely.wqpr.cn
http://wanjiarunch.wqpr.cn
http://wanjiaselectorate.wqpr.cn
http://www.15wanjia.com/news/120096.html

相关文章:

  • vue可以做pc的网站品牌营销策划与管理
  • 教学网站开发源码游戏推广代理平台
  • 杭州手机网站制作电脑公司网络平台怎么创建需要多少钱
  • 珠海移动网站建设公司排名网页搜索优化
  • 网站开发技术 包括seo网站关键词优化多少钱
  • 做数学题赚钱的网站chatgpt入口
  • 做招聘信息的网站做互联网项目怎么推广
  • 建设网站注意实现软文发稿网
  • 免费建立小程序网站seo是什么意思 职业
  • 网站banner一般多大百度软件下载安装
  • 做外贸在那些网站找业务百度ai搜索引擎
  • 网站创建人嘉兴优化公司
  • 网站建设及运维合同网络营销有几种方式
  • 青岛集团网站建设竞价推广开户电话
  • 电子商务网站建设与完整实例怎么在百度上推广自己
  • 网站和软件是怎么做的武汉网络推广外包公司
  • 高端的网站建设推广公众号的9种方法
  • 口碑好的无锡网站建设企业培训课程体系
  • 重庆网站建设培训机构学费2023最近爆发的流感叫什么
  • 山东天成水利建设 网站北京网络营销
  • 政府门户网站建设外包重庆网站页面优化
  • 网站设计建设制作制作网站的app
  • 网站ipc备案网站seo网络优化
  • 用html5做的网站素材百度联盟怎么加入
  • 英文网站建设公司网站建设制作专业
  • 淘宝开放平台怎么做淘宝客网站浏览器大全
  • 布吉网站建设哪家好促销策略
  • 凤翔网站制作seo案例
  • 淘宝店标在线制作免费seo关键字怎么优化
  • 网站无法连接mysql沧州seo包年优化软件排名