归并排序(JAVA版)
最近复习算法,为了年后找工作做准备,看了看网上归并排序,只懂算法原理源码没有看懂,算了,还是根据原理手撸吧!!!
如果大家想了解其他两种牛掰的排序,请猛戳下面链接
快速排序
堆排序
归并排序复杂度O(nlogn)
public class MergeSort {public static int arr[] = {2,4,7,8,9,4,5,1,2,3,6,8,7,8,54,4,2,58,47,5,8,4,2,5};public static void main(String[] args) {sort(arr,0,arr.length-1); //排序print(); //打印}//拆分public static void sort(int left,int right){if(left >= right)return;//递归终止条件,一个子数组只有一个或两个元素if(right-left==1){if(arr[left]>arr[right]){int t = arr[left];arr[left] = arr[right];arr[right] = t;}return;}//递归分解int mid = (left + right)/2;sort(arr,left,mid);sort(arr,mid+1,right);//合并merge(left,mid,right);}//合并public static void merge(int left,int mid,int right){int i = left;int j = mid+1;int k = 0;//开辟临时数组,合并两个有序子数组int temp[] = new int[right-left+1];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++];}//将临时数组合并到原来数组中k = 0;for(i = left;i<=right;i++){arr[i] = temp[k++];}}/*** 打印*/public static void print(){for(int a:arr){System.out.print(a+",");}System.out.println();}
}
自己手撸的印象确实比看网上或看书来的深刻
结束,拜拜
归并排序(JAVA版)相关推荐
- 经典十大排序算法(含升序降序,基数排序含负数排序)【Java版完整代码】【建议收藏系列】
经典十大排序算法[Java版完整代码] 写在前面的话 十大排序算法对比 冒泡排序 快速排序 直接选择排序 堆排序 归并排序 插入排序 希尔排序 计数排序 桶排序 基数排序 完整测试类 写在前面的话 ...
- Java算法:牛客网Java版剑指Offer全套算法面试题目整理及电子档,Java算法与数据结构面试题,面试刷题、背题必备!牛客网剑指offer
剑指offer(java版) 牛客网Java版剑指Offer全套题目67道 资源来源于网络 目录 1.二维数组中的查找 2.替换空格 3.从尾到头打印链表 4.重建二叉树 5.用两个栈实现队列 6.旋 ...
- 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)
常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...
- 数据结构与算法基础(java版)
目录 数据结构与算法基础(java版) 1.1数据结构概述 1.2算法概述 2.1数组的基本使用 2.2 数组元素的添加 2.3数组元素的删除 2.4面向对象的数组 2.5查找算法之线性查找 2.6查 ...
- hmcl离线登陆_最好用的Java版启动器HMCL
原标题:最好用的Java版启动器HMCL 推荐的启动器是什么了?就是 Hello Minecraft! Launcher 简称HMCL,这款启动器特色很多.一张图片简单说明!!! 支持离线登录代表了什 ...
- Twitter的分布式雪花算法 SnowFlake 每秒自增生成26个万个可排序的ID (Java版)
分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的. 有些时候我们希望能使用一种简单一 ...
- 分布式主键解决方案----Twitter 雪花算法的原理(Java 版)
SnowFlake 雪花算法 对于分布式系统环境,主键ID的设计很关键,什么自增intID那些是绝对不用的,比较早的时候,大部分系统都用UUID/GUID来作为主键,优点是方便又能解决问题,缺点是插入 ...
- 我的世界java下载1.13_Minecraft Java版 1.13.1-pre2 发布
Minecraft Java 版 1.13.1-pre2 发布 Back from vacation, we're now trying to finalize 1.13.1 and get it t ...
- 我的世界java版不会玩_我的世界:五张MC趣图,Java版玩家永远不懂基岩版玩家的痛...
<我的世界>1.17版本目前已经更新了8个快照版本,在玩家的期望中,Mojang总算是加入了新的洞穴--噪声洞穴(Noise Caves).虽然这属于洞穴与山崖更新的一大步,Java版玩家 ...
- 我的世界1.7.2 java_我的世界Java版1.7版本种子分享
我的世界Java版的1.7版本中有哪些好的种子呢?下面就给大家带来我的世界Java版1.7版本种子分享,以供玩家参考. 1.seed:-6281771182477298288 x:74 y:68 z: ...
最新文章
- Gulp 之图片压缩合并
- C学习if条件判断和for循环
- 服务端构架干货:快节奏多人游戏的技术实现
- C/C++知识分享番外:如何申请一个腾讯地图用户Key?
- android开源2016_2016年开源领域的7大法律发展
- centos 编译安装 mysql_CentOS7编译安装MySQL5.7.24的教程详解
- 微软测试新工具:让Windows 10和Android设备文件同步更方便
- php银行学生助学贷款管理系统
- linux下登录不上oracle,Oracle特定用户登录失败案例 ORA-20001
- javascript中使用getMonth()获得月份比实际月份少一个月
- logstash mutate split日志切分
- img lazyload chrome
- 页面可视化搭建工具业界的轮子
- 基于JAVA游泳馆信息管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
- 如何使用 R 从 Internet 下载文件
- 线下店迎来“文艺复兴”,三只松鼠哪里寻“独门妙方”?
- Meth | git 常用命令
- vue支付宝html,Vue的H5页面唤起支付宝支付功能
- 申请实用新型专利有什么好处?及实用新型专利申请流程
- T11 Origin绘图模板