java归并排序
时间:2022-05-03
本文章向大家介绍java归并排序,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package datastruct;
/**
* Created by Zephery on 2017/3/3.
*/
public class Solution {
public static void printArray(int[] arr, int i, int j) {
System.out.print("[");
for (int k = i; k < j; k++) {
System.out.print(arr[k] + ",");
}
System.out.print(arr[j] + "]");
}
private static void mergesort(int[] arr, int i, int j) {
int mid = 0;
if (i < j) {
mid = (i + j) / 2;
mergesort(arr, i, mid);
mergesort(arr, mid + 1, j);
merge(arr, i, mid, j);
}
}
private static void merge(int[] arr, int i, int mid, int j) {
System.out.print("Left:");
printArray(arr, i, mid);
System.out.println("Right:");
printArray(arr, mid + 1, j);
System.out.println();
int temp[] = new int[arr.length];
int l = i;
int r = j;
int m = mid + 1;
int k = l;
while (l <= mid && m <= r) {
if (arr[l] <= arr[m]) {
temp[k++] = arr[l++];
} else {
temp[k++] = arr[m++];
}
}
while (l <= mid) {
temp[k++] = arr[l++];
}
while (m <= r) {
temp[k++] = arr[m++];
}
for (int i1 = i; i1 <= j; i1++) {
arr[i1] = temp[i1];
}
System.out.print("After Merge:");
printArray(arr, i, j);
System.out.println();
}
public static void main(String args[]) {
int[] arr = {9, 4, 8, 3, 1, 2, 5};
System.out.print("Initial Array:");
printArray(arr, 0, arr.length - 1);
System.out.println();
mergesort(arr, 0, arr.length - 1);
}
}
Initial Array:[9,4,8,3,1,2,5]
Left:[9]Right:
[4]
After Merge:[4,9]
Left:[8]Right:
[3]
After Merge:[3,8]
Left:[4,9]Right:
[3,8]
After Merge:[3,4,8,9]
Left:[1]Right:
[2]
After Merge:[1,2]
Left:[1,2]Right:
[5]
After Merge:[1,2,5]
Left:[3,4,8,9]Right:
[1,2,5]
After Merge:[1,2,3,4,5,8,9]
- 自定义Appfabric Cache 配置提供程序
- 2017年发生在上海的科技大新闻
- REST当中为什么要使用HTTP PUT
- 推荐一个在Linux/Unix上架设ASP.NET的 WEB服务器--Jexus
- 人工智能与工业融合:没有你,对我很重要……
- DeepMind哈萨比斯对话哈里王子:2018年AI最大的突破在生物或化学
- 提升用户体验,微信小程序“授权失败”场景的优雅处理
- extjs 基础部分
- WordPress 网站开发“微信小程序”实战(二)
- Extjs form 组件
- Extjs grid 组件
- WordPress 网站开发“微信小程序”实战(三)
- Extjs mvc
- Extjs 数据代理
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- sm2国密算法的纯c语言版本,使用于单片机平台(静态内存分配)
- 面试:mysql 事务和锁的解释
- 【STM32F407开发板用户手册】第35章 STM32F407的FSMC总线应用之驱动AD7606(8通道同步采样, 16bit, 正负10V)
- 玩转easyARM imax283A开发版(二),移植NES模拟器并增加按键驱动,让板子可以玩超级玛丽游戏
- 完了!TCP出了大事!
- redis高并发高可用
- 嵌入式linux之go语言开发(九)关于嵌入式GUI
- docker入门总结,从使用的角度谈起
- 使用 Go 语言开发 Android 应用的正确姿势探索
- Android的配置文件操作的完美封装(使用注解 反射让配置文件操作如此清晰和简单)
- Android中protobuf的使用
- 疫情监控三部曲——在STM32F103 MCU上实现(裸机版)
- Android配置文件操作模块封装,全互联网最简单好用的封装
- 使用logcat让Android应用支持查看实时日志并输出至界面显示功能
- 如何处理redis集群的hot key和big key