当前位置:首页 科普知识 merge(归并排序算法)

merge(归并排序算法)

发布时间:2023-09-06 00:49:24

merge是建立在归并操作上的一种有效的排序算法。它将多个排序列表作为输入并生成单个列表作为输出,包含按排序顺序排列的输入列表的所有元素。

merge(归并排序算法)详细介绍

merge是建立在归并操作上的一种有效的排序算法。它将多个排序列表作为输入并生成单个列表作为输出,包含按排序顺序排列的输入列表的所有元素。

merge(归并排序算法)

merge简介

归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。

将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。

merge(归并排序算法)

merge归并操作

归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。

如 设有数列{6,202,100,301,38,8,1}

初始状态: 比较次数

i=1  3

merge(归并排序算法)

i=2  4

i=3  4

总计: 11次代码

merge代码

package sort;import static sort.SortUtils.print;class MergeSort implements SortAlgorithm {        public <T extends Comparable<T>> T sort(T unsorted) {        T tmp = (T) new Comparable;        doSort(unsorted, tmp, 0, unsorted.length - 1);        return unsorted;    }        private  static <T extends Comparable<T>> void doSort(T arr, T temp, int left, int right) {        if (left < right) {            int mid = left + (right - left) / 2;            doSort(arr, temp, left, mid);            doSort(arr,  temp,mid + 1, right);            merge(arr, temp, left, mid, right);        }    }        private static <T extends Comparable<T>> void merge(T arr, T temp, int left, int mid, int right) {        System.arraycopy(arr, left, temp, left, right - left + 1);        int i= left;        int j = mid + 1;        int k = left;        while (i <= mid && j <= right) {            if (temp.compareTo(temp) <= 0) {                arr = temp;                i++;            }            else {                arr = temp;                j++;            }            k++;        }        while (i <= mid) {            arr = temp;            i++;            k++;        }        while (j <= right) {            arr = temp;            j++;            k++;        }    }    public static void main(String args) {        // Integer Input        Integer arr = {4, 23, 6, 78, 1, 54, 231, 9, 12};        MergeSort mergeSort = new MergeSort();        mergeSort.sort(arr);        // Output => 1       4  6    9    12    23    54    78    231        print(arr);        // String Inpu        String stringArray = {"c", "a", "e", "b","d"};        mergeSort.sort(stringArray);        //Output => a    b    c    d    e        print(stringArray);    }}

温馨提示:
本文【merge(归并排序算法)】由作者 爱百科 转载提供。 该文观点仅代表作者本人, 自学教育网 信息发布平台,仅提供信息存储空间服务, 若存在侵权问题,请及时联系管理员或作者进行删除。
(c)2008-2025 自学教育网 All Rights Reserved 汕头市灵创科技有限公司
粤ICP备2024240640号-6