归并排序
1.首先是两个有序的数组
2.我们定义一个长度为A和B数组长度和的数组C
3.将A,B,C三个数组传入归并算法中
当A和B的数组下标都小于他们数字长度时
先取出A[1]和B[1]进行比较,将小的那个值放入C数字中
再将取出数字的数组和C数组下标++
当跳出次循环时,再看A或B数组那个下标还未到达他们的数组长度-1时
再次对该数组进行循环与赋值
当两次循环完毕后,C数字中就已经为AB数组排好序的值了
package com.huawei.sort;
import java.util.Arrays;
/**
-
@author Lpf.
-
@version 创建时间:2019年3月31日 下午1:34:49 归并排序
*/
public class MergeSort {public static void main(String[] args) {
// 首先我们获取两个有序的数组 Integer[] arrA = { 1, 18, 21, 35, 42, 59, 64, 78, 81, 94 }; Integer[] arrB = { 8, 12, 24, 38, 44, 59, 61, 79, 94, 98, 109 }; // 新建一个长度为arrA和arrB的数组 Integer[] sortArr = new Integer[arrA.length + arrB.length]; mergeSort(arrA, arrB, sortArr); System.out.println("排序好的数组" + Arrays.toString(sortArr));
}
public static void mergeSort(Integer[] arrA, Integer[] arrB, Integer[] sortArr) {
// arrA的下标 int a = 0; // arrB的下标 int b = 0; // sortArr的下标 int s = 0; while (a < arrA.length && b < arrB.length) { if (arrA[a] <= arrB[b]) { sortArr[s] = arrA[a]; a++; s++; } else { sortArr[s] = arrB[b]; b++; s++; } } while (a < arrA.length) { sortArr[s] = arrA[a]; a++; s++; } while (b < arrB.length) { sortArr[s] = arrB[b]; b++; s++; }
}
}