带你读《图解算法小抄》十四、排序(6)

简介: 带你读《图解算法小抄》十四、排序(6)

带你读《图解算法小抄》十四、排序(5)https://developer.aliyun.com/article/1348145?groupCode=tech_library


6算法优化改进

改进方法① - 二分插入排序

二分插入排序是对直接插入排序的改进,使用二分查找来找到插入位置,从而减少比较的次数。

 

改进代码:

 

// 二分插入排序function binaryInsertionSort(arr) {
  const len = arr.length;
  for (let i = 1; i < len; i++) {
    let current = arr[i];
    let left = 0;
    let right = i - 1;
    while (left <= right) {
      let middle = Math.floor((left + right) / 2);
      if (arr[middle] > current) {
        right = middle - 1;
      } else {
        left = middle + 1;
      }
    }
    for (let j = i - 1; j >= left; j--) {
      arr[j + 1] = arr[j];
    }
    arr[left] = current;
  }}

改进方法② - 希尔排序

希尔排序是对插入排序的进一步改进,通过将数组分成多个子序列进行插入排序,逐渐缩小子序列的间隔,最终实现全局的排序。

7复杂度

名称

最佳情况

平均情况

最坏情况

内存

稳定性

备注

插入排序

n

n2

n2

1

 

8参考资料

维基百科


4.归并排序


归并排序(Merge Sort)是一种高效的通用比较排序算法。大多数实现都产生稳定排序,这意味着算法会保留排序输出中相等元素的输入顺序。归并排序是一种分治算法,由约翰·冯·诺伊曼(John von Neumann)于1945年发明。

下图是归并排序的示例。首先将列表划分为最小单位(1个元素),然后将每个元素与相邻的列表进行比较,以便排序和合并相邻的列表。最后,所有元素都被排序和合并。

 

image.png

下图是用于对包含7个整数值的数组进行排序的递归归并排序算法。这些步骤是人类为了模拟归并排序而采取的操作(自顶向下)。

 

image.png

 

 

带你读《图解算法小抄》十四、排序(7)https://developer.aliyun.com/article/1348143?groupCode=tech_library

相关文章
|
6月前
|
机器学习/深度学习 算法 安全
【无人机三维路径规划】基于非支配排序的鲸鱼优化算法NSWOA与多目标螳螂搜索算法MOMSA求解无人机三维路径规划研究(Matlab代码实现)
【无人机三维路径规划】基于非支配排序的鲸鱼优化算法NSWOA与多目标螳螂搜索算法MOMSA求解无人机三维路径规划研究(Matlab代码实现)
343 5
|
6月前
|
机器学习/深度学习 运维 算法
基于非支配排序遗传算法NSGAII的综合能源优化调度(Matlab代码实现)
基于非支配排序遗传算法NSGAII的综合能源优化调度(Matlab代码实现)
355 0
基于非支配排序遗传算法NSGAII的综合能源优化调度(Matlab代码实现)
|
7月前
|
机器学习/深度学习 算法 安全
【无人机3D路径规划】基于非支配排序遗传算法NSGAII的无人机3D路径规划研究(Matlab代码实现)
【无人机3D路径规划】基于非支配排序遗传算法NSGAII的无人机3D路径规划研究(Matlab代码实现)
290 1
|
6月前
|
机器学习/深度学习 算法 安全
【无人机三维路径规划】多目标螳螂搜索算法MOMSA与非支配排序的鲸鱼优化算法NSWOA求解无人机三维路径规划研究(Matlab代码实现)
【无人机三维路径规划】多目标螳螂搜索算法MOMSA与非支配排序的鲸鱼优化算法NSWOA求解无人机三维路径规划研究(Matlab代码实现)
242 0
|
6月前
|
机器学习/深度学习 算法 安全
【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究(Matlab代码实现)
【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究(Matlab代码实现)
206 0
|
7月前
|
机器学习/深度学习 算法 安全
【优化调度】基于matlab非支配排序遗传算法求解车辆充电调度优化问题研究(Matlab代码实现)
【优化调度】基于matlab非支配排序遗传算法求解车辆充电调度优化问题研究(Matlab代码实现)
151 0
|
6月前
|
存储 算法 搜索推荐
软考算法破壁战:从二分查找到堆排序,九大排序核心速通指南
专攻软考高频算法,深度解析二分查找、堆排序、快速排序核心技巧,对比九大排序算法,配套动画与真题,7天掌握45%分值模块。
289 1
软考算法破壁战:从二分查找到堆排序,九大排序核心速通指南
|
6月前
|
供应链 算法 Java
【柔性作业车间调度问题FJSP】基于非支配排序的多目标小龙虾优化算法求解柔性作业车间调度问题FJSP研究(Matlab代码实现)
【柔性作业车间调度问题FJSP】基于非支配排序的多目标小龙虾优化算法求解柔性作业车间调度问题FJSP研究(Matlab代码实现)
243 1
|
7月前
|
传感器 并行计算 算法
【无人机编队】基于非支配排序遗传算法II NSGA-II高效可行的无人机离线集群仿真研究(Matlab代码实现)
【无人机编队】基于非支配排序遗传算法II NSGA-II高效可行的无人机离线集群仿真研究(Matlab代码实现)
506 3
|
6月前
|
机器学习/深度学习 算法 安全
【无人机三维路径规划】基于非支配排序的鱼鹰优化算法NSOOA求解无人机三维路径规划研究(Matlab代码实现)
【无人机三维路径规划】基于非支配排序的鱼鹰优化算法NSOOA求解无人机三维路径规划研究(Matlab代码实现)
154 0