最新要闻
- 【环球财经】日本为何出现巨额贸易逆差
- 便宜的瓜不甜?百果园回应女子团购西瓜被嘲讽:是误解 已道歉|全球热闻
- 京东618发布“35711”梦想:打造3家万亿收入公司 创造100万就业_通讯
- 演员胡兵向东航维权失败:价值一万多的白金卡50万积分一夜清零
- 当前播报:京东限时优惠:Redmi 27英寸4K显示器享大降价
- 世界头条:人气漫改!网飞真人版《海贼王》预告片出炉:路飞橡胶手无敌
- 全球车企第一高!马斯克曝特斯拉市值上涨主要动力 今日快看
- 关注:广州一龙舟队全是富婆?当地:事实 但身价不是参赛门槛
- 焦点热门:一公司端午节只发了三颗荔枝 员工吐槽:是不是公司要凉了?
- 女子户外活动后因热射病去世 专家提醒:轻度中暑及时干预_每日时讯
- 春天的诗有哪些古诗 春天的100首古诗有哪些|快资讯
- 当前速递!校长猥亵残障女学生判3年 法院回应全案审查!简直是禽兽不如!
- 保时捷Taycan对手来了!法拉利“老乡”发布纯电轿跑:124万起-世界报道
- 世界短讯!上新啦!这些夏日冷饮新品你尝过了吗?今年中国饮品冷饮产业还有这些新趋势!
- 清除外卖行业“影子店铺”隐患
- 今天是父亲节 微信上线限时状态感谢老爸:教你2步设置|环球快播
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【技术积累】算法中的排序算法【一】
冒泡排序(Bubble Sort)
算法描述:通过不断地交换相邻两个元素,把最大的元素移到数组的最后面,然后不断缩小排序范围,直到整个数组有序。
算法步骤:
- 遍历整个待排序的数组。
- 比较相邻的两个元素。
- 如果前面的元素比后面的元素大,就交换它们
- 重复以上步骤,直到整个数组有序。
伪代码:
(资料图)
procedure bubbleSort(array A) n := length(A) repeat swapped := false for i from 1 to n-1 do if A[i] > A[i+1] then swap(A[i], A[i+1]) swapped := true end if end for n := n - 1 until not swappedend procedure
选择排序(Selection Sort)
算法描述:对于一组待排序的元素,先找到最小元素,然后把它放到第一位,接着再找到次小元素,放到第二位,依次类推,直到所有的排序工作都已经完成。
算法步骤:
- 找到数组中最小元素并记录其位置。
- 把最小元素放在数组的起始位置。
- 从下一个元素开始,重复以上步骤,直到整个数组有序。
伪代码:
procedure selectionSort(array A) n := length(A) for i from 1 to n-1 do minIndex := i for j from i+1 to n do if A[j] < A[minIndex] then minIndex := j end if end for swap(A[i], A[minIndex]) end forend procedure
插入排序(Insertion Sort)
算法描述:将一个记录插入到已经排好的有序序列中,从而得到一个新的,记录数增加1的有序序列。
算法步骤:
- 从第一个元素开始,该元素可以认为已经被排序。
- 取出下一个元素,在已经排序的元素序列中从后向前扫描。
- 如果被扫描的元素大于新元素,将该元素往右移动一个位置。
- 重复步骤3,直到找到已排序的元素小于或等于新元素的位置。
- 将新元素插入到该位置后。
- 重复以上步骤,直到整个数组有序。
伪代码:
procedure insertionSort(array A) n := length(A) for i from 2 to n do key := A[i] j := i - 1 while j > 0 and A[j] > key do A[j+1] := A[j] j := j - 1 end while A[j+1] := key end forend procedure
希尔排序(Shell Sort)
算法描述:将原始数组按照一定的间隔分为若干子序列,然后对每个子序列进行插入排序,直到整个数组排序完成。
算法步骤:
- 确定分组间隔gap的大小(最开始可以设为数组长度的一半)。
- 按照gap的大小将原始数组分为若干个子序列。
- 对每个子序列进行插入排序。
- 缩小gap的大小,重复以上步骤,直到gap为1时,整个数组排序完成。
伪代码:
procedure shellSort(array A) n := length(A) gap := n / 2 while gap > 0 do for i from gap to n-1 do temp := A[i] j := i while j >= gap and A[j-gap] > temp do A[j] := A[j-gap] j := j - gap end while A[j] := temp end for gap := gap / 2 end whileend procedure
归并排序(Merge Sort)
算法描述:将原始数组分成若干个较小的子数组,对每个子数组进行排序,然后再将排好序的子数组合并成一个大的有序数组。
算法步骤:
- 把长度为n的数组分成两个长度为n/2的子数组。
- 对这两个子数组分别进行归并排序。
- 将排好序的两个子数组合并成一个大的有序数组。
伪代码:
procedure mergeSort(array A) n := length(A) if n > 1 then mid := n / 2 left := A[1..mid] right := A[mid+1..n] mergeSort(left) mergeSort(right) merge(left, right, A) end ifend procedureprocedure merge(left, right, A) i := 1 j := 1 k := 1 while i <= length(left) and j <= length(right) do if left[i] <= right[j] then A[k] := left[i] i := i + 1 else A[k] := right[j] j := j + 1 end if k := k + 1 end while while i <= length(left) do A[k] := left[i] i := i + 1 k := k + 1 end while while j <= length(right) do A[k] := right[j] j := j + 1 k := k + 1 end whileend procedure
快速排序(Quick Sort)
算法描述:将原始数组分为两个子数组,其中一个子数组的所有元素都比另一个子数组的元素小,再递归地对两个子数组进行快速排序,直到整个数组有序。
算法步骤:
- 从数组中取一个基准元素(通常选择第一个元素)。
- 把数组中小于基准元素的元素放在基准元素左边,大于基准元素的元素放在基准元素右边。
- 对基准元素左右两个子集递归地进行快速排序。
伪代码:
procedure quickSort(array A, left, right)if left < right thenpivot := partition(A, left, right)quickSort(A, left, pivot-1)quickSort(A, pivot+1, right)end ifend procedurefunction partition(A, left, right)pivot := A[left]i := left + 1j := rightwhile true do while i <= j and A[i] < pivot do i := i + 1 end while while i <= j and A[j] > pivot do j := j - 1 end while if i <= j then swap(A[i], A[j]) else break end ifend whileswap(A[left], A[j])return jend function
堆排序(Heap Sort)
算法描述:将原始数组看成一个完全二叉树,并将其调整为大根堆,然后将根节点(即最大值)与最后一个节点交换位置,缩小排序范围,重复以上步骤,直到整个数组有序。
算法步骤:
- 将原始数组调整为大根堆。
- 将堆顶元素(即最大元素)与最后一个叶子节点交换位置。
- 对减少一个元素的堆进行调整,使其重新成为一个大根堆。
- 重复以上步骤,直到整个数组有序。
伪代码:
procedure maxHeapify(A, i, heapSize) left := 2 * i right := 2 * i + 1 largest := i if left <= heapSize and A[left] > A[largest] then largest := left end if if right <= heapSize and A[right] > A[largest] then largest := right end if if largest != i then swap(A[i], A[largest]) maxHeapify(A, largest, heapSize) end ifend procedureprocedure buildMaxHeap(A, heapSize) for i from floor(heapSize/2) down to 1 do maxHeapify(A, i, heapSize) end forend procedureprocedure heapSort(A) heapSize := length(A) buildMaxHeap(A, heapSize) for i from heapSize downto 2 do swap(A[1], A[i]) heapSize := heapSize - 1 maxHeapify(A, 1, heapSize) end forend procedureend function
计数排序(Counting Sort)
算法描述:对于有限的数列,使用一个全新的数列记录它们的出现次数,再根据出现次数将原始数列排序。
算法步骤:
- 找到原始数组的最大值max。
- 初始化一个长度为max的计数数组C,对每个元素统计它出现的次数。
- 对计数数组C进行累加,得到C的新数组D。
- 从右到左遍历原始数组,根据元素在计数数组D中的位置,将元素插入到新数组R中的合适位置。
- 返回新数组R。
伪代码:
procedure countingSort(A) max := 0 for i from 1 to length(A) do if A[i] > max then max := A[i] end if end for C := array(0..max, 0) for i from 1 to length(A) do C[A[i]] := C[A[i]] + 1 end for D := array(0..max, 0) for i from 1 to max do D[i] := D[i-1] + C[i] end for R := array(1..length(A), 0) for i from length(A) downto 1 do R[D[A[i]]] := A[i] D[A[i]] := D[A[i]] - 1 end for return Rend procedure
桶排序(Bucket Sort)
算法描述:将原始数组分为若干个桶,每个桶的元素值范围相同,再对每个桶里的元素进行排序,将所有桶中的元素按顺序依次排列在一起。
算法步骤:
- 初始化若干个桶,桶的数量等于元素范围的个数。
- 遍历原始数组中的每个元素,将元素放入相应的桶中。
- 对每个桶中的元素进行插入排序,使得每个桶内的元素有序。
- 将所有桶中的元素按顺序依次排列在一起。
伪代码:
procedure bucketSort(A) n := length(A) buckets := array(length(A)) for i from 1 to n do bucketIndex := ceil(A[i] * n / max(A)) buckets[bucketIndex] := append(buckets[bucketIndex], A[i]) end for for i from 1 to length(buckets) do insertionSort(buckets[i]) end for R := concatenate all buckets return Rend procedure
基数排序(Radix Sort)
算法描述:将原始数组按照数位进行比较和排序,先比较最低位,然后依次向上比较,直到比较完最高位。
算法步骤:
- 从最低位开始,按照数位进行比较
- 对比较之后的元素按顺序排列。
- 将已经排好序的元素从原始数组中删除,并将它们按照排序顺序依次插入到新的数组中。
- 重复以上步骤,直到处理完最高位。
伪代码:
procedure radixSort(A) maxDigit := getMaxDigit(A) for i from 1 to maxDigit do buckets := array(0..9, empty array) for j from 1 to length(A) do digit := getDigit(A[j], i) buckets[digit] := append(buckets[digit], A[j]) end for A := concatenate all buckets end for return Aend procedurefunction getMaxDigit(A) max := 0 for i from 1 to length(A) do if A[i] > max then max := A[i] end if end for return length(toString(max))end functionfunction getDigit(num, i) return mod(floor(num / power(10, i-1)), 10)end function
关键词:
【技术积累】算法中的排序算法【一】
极限科技旗下软件产品 INFINI Easysearch 通过统信 UOS 认证|天天热议
【环球财经】日本为何出现巨额贸易逆差
便宜的瓜不甜?百果园回应女子团购西瓜被嘲讽:是误解 已道歉|全球热闻
京东618发布“35711”梦想:打造3家万亿收入公司 创造100万就业_通讯
演员胡兵向东航维权失败:价值一万多的白金卡50万积分一夜清零
天天快讯:在 Cenntos6.8 下安装 Oracle11g
当前播报:京东限时优惠:Redmi 27英寸4K显示器享大降价
世界头条:人气漫改!网飞真人版《海贼王》预告片出炉:路飞橡胶手无敌
全球车企第一高!马斯克曝特斯拉市值上涨主要动力 今日快看
关注:广州一龙舟队全是富婆?当地:事实 但身价不是参赛门槛
焦点热门:一公司端午节只发了三颗荔枝 员工吐槽:是不是公司要凉了?
女子户外活动后因热射病去世 专家提醒:轻度中暑及时干预_每日时讯
春天的诗有哪些古诗 春天的100首古诗有哪些|快资讯
【热闻】JWT的基本组成结构
当前速递!校长猥亵残障女学生判3年 法院回应全案审查!简直是禽兽不如!
保时捷Taycan对手来了!法拉利“老乡”发布纯电轿跑:124万起-世界报道
世界短讯!上新啦!这些夏日冷饮新品你尝过了吗?今年中国饮品冷饮产业还有这些新趋势!
【技术积累】Java中的集合框架【一】
清除外卖行业“影子店铺”隐患
今天是父亲节 微信上线限时状态感谢老爸:教你2步设置|环球快播
环球信息:重新定义移动办公:华为MatePad Air“野趣办公”成年轻人办公新潮流
每日焦点!16GB显存直戳RTX 4070痛点 AMD RX 7800 XT显卡定了
读发布!设计与部署稳定的分布式系统(第2版)笔记04_集成点
张家界桑植,跳桥救人小哥彭清林的家乡:那里都是“彩色的人”
1799元!前小米9号员工李明发布全球首款Android桌面机器人
Windows游戏一键移植 苹果Mac电脑硬伤不再:暗黑4能跑近百帧 当前热闻
李想造车:网上全赢过 现实没输过 焦点资讯
今日观点!女子骑车手扶帽子头部着地身亡:戴头盔太重要 新国标下月施行
天天观热点:吸甲醛最快最有效方法不花钱(吸甲醛最好的方法是什么)
理想自研自动充电机器人亮相:自动插枪 车主全程免下车_实时焦点
观焦点:广汽本田首批ZR-V致在e:HEV出口欧洲
rust 使用第三方库构建mini命令行工具
spring-boot 项目 使用总结
淄博狂飙90天:烧烤降温流量下滑 大部分烧烤店不再需要排队|当前速看
跳河救人小哥说大家给我的太多了:我只是做了一件小事
95后小伙卖临期食品走红:极具性价比 也能防止浪费_天天视讯
余承东:除了华为和比亚迪 其他人活下来很难
焦点热议:小孩路边偷偷买猫 家长找商家退猫遭拒把猫摔死:网友看怒
83届奥斯卡获奖名单(关于83届奥斯卡获奖名单的基本详情介绍)-全球速递
Rachio3控制用水量的智能庭院洒水器_全球最资讯
【全球新视野】Linux批量文件操作——基于find-xargs
安全攻击溯源-钓鱼邮件溯源 环球滚动
天天百事通!保时捷Mission_E原型车在纽伯格林上飞奔
一加Ace 2V大促:12+256不到2000元 无塑料支架 前沿资讯
大雾致航班取消 乘客骂哭机场员工
焦点速看:江苏常州:把惠企的公交车开到企业“家门口”
环球动态:08. centos安装包方式安装nginx(推荐该方式)
nas docker安装mysql 整理
麻省理工学院开发出超吸水性水凝胶 具有巨大的应用潜力
为计划支持平稳过渡 谷歌千万域名将全部打包出售
网友将梅西亲笔签名纹在了手臂上 网友点评称将永远擦不掉
国产开放世界端游《仙剑世界》即将开启首测 研发时间超过两年
极兔速递正式向港交所提交上市申请书 2022年包裹量计为东南亚排名第一
山东一高校为毕业生举行别有滋味的龙虾宴 引发网友羡慕嫉妒
2023端午档期预售票房突破1000万 王宝强新作《八角笼中》备受期待
医生发现一男子是正常人骨密度的8倍 车祸后毫发无损
媒体曝光C罗与乔治娜曾达成“婚前协议” 若分手女友每个月可获10万欧元补贴
北方多地迎来高温天气 网友在线表演无火煎蛋
《永劫无间》胡桃1/4限量收藏级雕像即将上线 引入全彩3D仿真眼球
百度旗下萝卜快跑开展L4级无人驾驶商业化收费运营 运营时间覆盖早晚高峰
研究结果显示土星发现高浓度磷元素存在 为构成生命的六大基本元素之一
热心市民无意捡到石头竟是新石器时代遗存文物 具有不小的研究价值
快资讯:自研认知大模型 理想汽车带来“一员”真正的家庭成员
理想汽车发布城市NOA:不依赖高精地图 驾驶技术接近人类司机_全球微资讯
双黄蛋!胡歌大鹏获上海电影节影帝|当前快播
苏翊鸣回应获得清华大学保送资格消息 称未来四年将更加努力
因云南昭通突降暴雨引发山洪 135名初三学生的身份证被冲走
因影响公共秩序 冲场拥抱梅西球迷1年内被禁入赛场观看同类比赛
韩国人气女星宋慧乔全新短片曝光 身穿白色衬衫搭配咖啡色长裙且气质优雅
防治荒漠化能有多少种可能?来看看这份“中国良方”_速看料
英特尔将在波兰建造全新半导体组装和测试设施 现等待欧盟委员会批准
深圳邮局海关发现23只活体蜈蚣 其毒腺可分泌出大量毒液
环球看热讯:杀疯了!折叠屏不到4000 moto razr 40明天预售
充电进入5G时代 理想公布800V快充:充电9分半续航400公里-世界快资讯
阴阳师物语vivibear_阴阳师物语-微速讯
世界速递!【MathJax】语法总结
k8s 深入篇———— docker 是什么[一] 全球信息
英伟达RTX 40系列公版显卡今晚20点开抢:3199-12999元
售价超200万的FF 91又鸽了 贾跃亭造车梦何时能成?还差得远!
别人家的学校你羡慕了吗?山东一高校请近300名毕业生吃龙虾宴 环球即时看
618买笔记本电脑!教你看懂屏幕参数
埃安2024款AION V Plus将于6月20日上市:买五座送三排-当前热闻
图片报:拜仁关注哈弗茨,若无缘其他目标图赫尔能设想签他踢前锋
Lua 中如何实现继承
女子买1根牛肉干店员偷塞5根的量 当事人:特别气愤
世界今头条!六个口味 八喜冰淇淋3.8元/杯抄底(商超8元)
堆料不留遗憾的满血顶级非公旗舰!索泰RTX 4090 PGF OC评测:当之无愧新一代卡皇-世界头条
银河证券:通信+新基建板块有望率先预期上修 高景气度结合低估值是选股重点方向
记录--封装一个通过js调用的全局vue组件
世界讯息:Linux下常用命令
vim敲字如弹琴
我找到了阅读GitHub项目源码的最佳姿势,太舒服了!
世界短讯!玩游戏怎么选显示器?认准这几点准没错
男子发现捡回家两年的石头是文物 已无偿捐赠:网友惊叹
全球热推荐:国产GPU能否满足ChatGPT算力要求 景嘉微回应来了:还不行
环球观焦点:今年“蒸煮模式”咋提前了?专家解读
长城汽车给理想汽车起了个外号:“微博之王” 李想本人回应亮了 世界微动态
易宝支付总裁余晨出席《通用人工智能》新书发布会
腾讯太狠:40亿QQ号, 给你1G内存,怎么去重?