归并排序-java
来源:互联网 发布:车辆轨迹 大数据分析 编辑:程序博客网 时间:2024/05/21 05:37
今天研究了一下归并排序,原理是这样的:
将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列
综合并运用递归和归并的方法:
代码是这样的:
/** * 归并排序 */package algorithm;public class Test {public static void main(String[] args) {// TODO Auto-generated method stub} public static void mergeSort(int[] data) { sort(data, 0, data.length - 1); } public static void sort(int[] data, int left, int right){ if(left >= right) return; int center = (left+right) / 2; sort(data, left, center); //递归排序左子序列 sort(data, center+1, right); //递归排序右子序列 merge(data, left, center, right); //左右子序列(已排好序)合并 } public static void merge(int[] data, int left, int center, int right){ int[] tempArr = new int[data.length]; int mid = center+1; //右边数组第一个元素索引 int index = left; //记录临时数组的索引 int tmp = left; //缓存左数组第一个元素的索引 while(left <= center && mid <= right){ if(data[left] <= data[mid]){ tempArr[index++] = data[left++]; }else{ tempArr[index++] = data[mid++]; } } while(mid <= right) tempArr[index++] = data[mid++]; while(left <= center) tempArr[index++] = data[left++]; //临时数组中数拷贝到原数组中 while(tmp <= right) data[tmp] = tempArr[tmp++]; }}总体来说,思路还是比较清晰的!
0 0
- java排序--归并排序
- 排序-归并排序-Java
- 归并排序Java实现
- java归并排序算法
- JAVA归并排序算法
- java归并排序
- java归并排序
- Java实现归并排序
- 归并排序(java)
- 25、JAVA归并排序
- java 归并排序
- java归并排序
- Java归并排序
- 归并排序 java
- Java实现归并排序
- 归并排序Java实现
- java 归并排序
- Java归并排序
- 计算机网路-网络层
- java中的原子操作类AtomicInteger及其实现原理
- uva 524Prime Ring Problem
- 正确设置php-fpm子进程用户,提高网站安全性防挂马
- 经典写法
- 归并排序-java
- PAT (Basic Level) Practise 1014. 福尔摩斯的约会 (20)
- 笔试基础归纳-8.19
- werkzeug.utils.import_string的用处
- 二十一、修改头像(2)----上传头像图片
- linux环境下基于UDP的 客户端服务器模型
- Java中原子类的实现
- 关于TCP校验和的一些实验体会
- C++标准模板库(STL)使用 01