「这是我参与2022首次更文挑战的第7天,活动详情查看:2022首次更文挑战」。
前言
排序是开发中必不可少的一项内容,不管你使用的什么语言,排序的几个点都是相同的,下面带大家先理解一下排序的几个测量概念,后续讲解每个排序的java的具体实现以及分析他们的性能。
平均时间复杂度
时间复杂度用于评估计算机处理的一个量度,常见有 O(1),O(logn),O(n),O(nlogn),O(n^2),O(2^n)...
上面复杂度按照循序来排列
最好情况、最坏情况
最好情况与最坏情况也是按照时间复杂度来评估的一个参数,取值也是上面时间复杂度的取值
空间复杂度
对算法在运行中占用的存储空间的一个量度
排序方式
分为两种方式
-
内排序:内排序指在内存中进行数据处理 内排序的算法有:冒泡、选择、插入、希尔
-
外排序:外排序会结合内存中数据与外存设备数据进行处理 外排序的算法有:归并
稳定性
在排序队列中如果存在2个或多个元素,元素1和元素2,在需要排序的字段中他们有相同关键字1和关键词2,这时候不稳定的排序无法对后面的排序进行正确排序,而稳定排序可以把多个字段进行排序,第一个关键词排序好后,保证位置不动的情况下开始排序第二个元素。
粗俗一点就是 一个人拥有身高、年龄等多个参数,排序时需要按照多个字段来排序。
总结
- 在排序算法中评估一个排序是否是可行的采用最多是时间复杂度与空间复杂度与稳定性
- 稳定性排序在多个元素中至关重要
- 下面篇章会使用复杂度来对后面的排序进行对比