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

蓝桥java排序算法

1.归并排序:

1.原理:分治策略

 分:将数组不断二分,直到每个子数组只有一个元素

治:对每个子数组进行排序

合:将已排序的子数组合并成一个完整的有序数组

2.理解

归并排序就像打扑克牌一样

有这样一堆乱序的扑克牌: [8, 3, 5, 1, 9, 2]

第一步:分治

原始: [8, 3, 5, 1, 9, 2]
↓ 分成两半
左边: [8, 3, 5]             右边: [1, 9, 2]
↓ 继续分                         ↓ 继续分
[8,3] [5]                            [1,9] [2]
↓ 再分   ↓                    ↓ 再分  ↓
[8] [3] [5]                       [1] [9] [2]

第二步:合并排序(治合)

现在每个小组只有1张牌,本身就是有序的,然后两两合并:

第一轮合并:
[8]和[3]合并 → 比较8和3,小的在前 → [3, 8]
[1]和[9]合并 → 比较1和9,小的在前 → [1, 9]
[5]和[2]保持不动(因为5和2不在同一组)

当前状态:[[3,8], [5], [1,9], [2]]

继续比较:

第二轮合并:
[3,8]和[5]合并 → 比较3和5 → [3,5,8]
[1,9]和[2]合并 → 比较1和2 → [1,2,9]

当前状态:[[3,5,8], [1,2,9]]

合并后在继续:

第三轮合并:
[3,5,8]和[1,2,9]合并:
比较3和1 → 1更小 → 取1
比较3和2 → 2更小 → 取2  
比较3和9 → 3更小 → 取3
比较5和9 → 5更小 → 取5
比较8和9 → 8更小 → 取8
最后取9 → [1,2,3,5,8,9]

这里搞个简洁模板:

public class MergeSort {
public static void mergeSort(int[] arr) {
if (arr == null || arr.length < 2) return;
sort(arr, 0, arr.length - 1, new int[arr.length]);
}

private static void sort(int[] arr, int left, int right, int[] temp) {
if (left >= right) return;

int mid = left + (right - left) / 2;
sort(arr, left, mid, temp);
sort(arr, mid + 1, right, temp);

// 合并
int i = left, j = mid + 1, k = 0;
while (i <= mid && j <= right) {
if (arr[i] <= arr[j]) {
temp[k++] = arr[i++];
} else {
temp[k++] = arr[j++];
}
}
while (i <= mid) temp[k++] = arr[i++];
while (j <= right) temp[k++] = arr[j++];

// 复制回原数组
for (i = 0; i < k; i++) {
arr[left + i] = temp[i];
}
}
}

2.快速排序

 

 

http://www.dtcms.com/a/594077.html

相关文章:

  • 沈阳建立网站茶具网站模板
  • 数据集很大的时候怎么办
  • 探索仓颉编程语言:从Hello World到性能实战
  • 潍坊网站制作建设h5网站建设模板下载
  • 【负载均衡】LVS原理与配置
  • 基于SpringBoot+Vue2的美食菜谱美食分享平台
  • 宿州建设公司网站wordpress虚拟模板
  • 算法-哈希表和相关练习-java
  • 新上线的网站怎么做优化asp网站默认后台
  • CSS浮动样式
  • 华能集团网站建设方案项目分析网络优化公司哪家好
  • 做网站有哪些主题wordpress cms
  • k8s中的StatefulSet 控制器
  • web开发,在线%餐饮自动化管理%系统,基于idea,html,css,jquery,jsp,java,jdk,maven,ssm,mysql。
  • 西安网站排名公司门户网站自查报告
  • 网站设计配色案列青岛网站seo推广
  • 蓝牙钥匙 第78次 蓝牙与区块链技术融合:构建去中心化物联网安全新范式
  • Ubuntu Desktop Linux 文件和文件夹操作命令详解
  • 兰州市建设工程招标投标中心网站廊坊网站建设公司费用
  • 【论文调研】NASA任务负荷指数(NASA-TLX)V1.0 总结
  • Spark 中 distribute by、sort by、cluster by 深度解析
  • 外贸网站平台都有哪些平台wordpress安装博客
  • 长春网站建设企业wordpress 取消评论
  • 电商网站设计制作网站建设与设计实习报告
  • C++ 设计模式《业务模块的调度室》
  • 南京电商网站开发网业上有错误怎么解决
  • MongoDB 操作命令
  • python和mongodb交互
  • 网站建设就业前景学校网站建设栏目设置
  • 文心一言5.0 Preview模型能力观察:基于LMArena排名的文本任务实测