1. public class MergeSort {
2. //将有二个有序数列a[first...mid]和a[mid...last]合并。
3. static void mergearray(int a[], int first, int mid, int last, int temp[]) {
4. int i = first, j = mid + 1;
5. int m = mid, n = last;
6. int k = 0;
7.
8.
9. while (i <= m && j <= n) {
10. if (a[i] <= a[j])
11. temp[k++] = a[i++];
12. else
13. temp[k++] = a[j++];
14. }
15.
16.
17. //如果从mid到last的数据已经遍历完毕,将first到mid剩余的数据拷贝至sorted
18. while (i <= m) {
19. temp[k++] = a[i++];
20. }
21.
22.
23. //如果从first到mid的数据已经遍历完毕,将mid到last剩余的数据拷贝至sorted
24. while (j <= n) {
25. temp[k++] = a[j++];
26. }
27.
28.
29. //至此,temp[]为有序的数组
30.
31.
32. //更改a[]中first至last元素顺序,使其排序
33. for (i = 0; i < k; i++) {
34. a[first + i] = temp[i];
35. }
36. }
37.
38.
39. static void mergesort(int a[], int first, int last, int temp[]) {
40. if (first < last) {
41. int mid = (first + last) / 2;
42. mergesort(a, first, mid, temp); //递归,将数组切割至最小(1个元素)
43. mergesort(a, mid + 1, last, temp); //同上
44. mergearray(a, first, mid, last, temp); //再将相邻的二个元素合并、排序,往上递归,直至最后合并成一个最大的有序数组
45. }
46. }
47.
48.
49. public static void main(String[] args) {
50. int[] x = { 6, 2, 4, 1, 5, 9, 3 };
51. int[] sorted = new int[x.length];
52. mergesort(x, 0, x.length - 1, sorted);
53.
54.
55. for (int i = 0; i < sorted.length; i++) {
56. System.out.println(sorted[i]);
57. }
58. }
59. }
Java实现归并排序
转载mb644789379f291 博主文章分类:algorithm
文章标签 i++ 数据 递归 文章分类 JavaScript 前端开发
上一篇:SPRING MVC的实现机制
-
Java实现归并排序
归并排序是一种比堆排序效率还要高的算法时间复杂度O(n*logn)空间复杂度O(n
算法 数据结构 排序算法 i++ 数组 -
Python实现归并排序
Python实现归并排序
Python实现归并排序 归并排序 归并排序简介 归并排序原理 归并排序的时间复杂度和稳定性 -
java归并排序非递归实现 java 归并排序
基本思想: 将两个或两个以上的有序表合并成一个有序表的过程。常用的归并为2-路归并,就是将两个有序表合为一个有序表。过程: 先来看一张示意图: &n
java归并排序非递归实现 java 开发语言 算法 排序算法 -
二路归并排序java实现 2路归并排序和归并排序
二路归并排序是一种稳定的排序方法。时间复杂度为O(nlogn),空间复杂度为O(n)。
二路归并排序java实现 排序 归并排序 i++ 时间复杂度 -
java中deleteOnExit这是干什么的
课程项目中部分功能的数据存储用到了SQLite(轻便),一些地方有在update加limit子句的需求,SQLite是可以支持在update和delete语句中加limit子句的,在官网也查到了这个功能: Optional LIMIT and ORDER BY Clauseswww.sqlite.org 但是在使用Exposed框架连接SQLite时,执行含有limit子句的update时报
c++删除文件delete docker update linux c++ sqlite sqlite 下载哪个版本 ubuntu update