第五天算法设计

归并排序
需求:
排序前:{8,4,5,7,1,3,6,2}
排序后:{1,2,3,4,5,6,7,8}
算法设计
Merge类:
package suanfa;

public class Merge {
private static Comparable[] assist;
private static boolean less(Comparable v,Comparable w){
return v.compareTo(w)<0;
}

private static void  exch(Comparable[] a,int i,int j){
    Comparable t = a[i];
    a[i] =a[j];
    a[j] =t;
}

public static void sort(Comparable[] a){
    assist = new Comparable[a.length];

    int lo=0;
    int hi=a.length-1;
    sort(a,lo,hi);
}
private static void sort(Comparable[] a,int lo,int hi){
    if(hi<= lo){
        return;
    }

    int mid = lo+(hi-lo)/2;
    sort(a,lo,mid);
    sort(a,mid+1,hi);
    merge(a,lo,mid,hi);
}
private static void merge(Comparable[] a,int lo,int mid,int hi){

    int i =lo;
    int p1 =lo;
    int p2 =mid+1;

    while(p1<=mid&&p2<=hi) {
        if (less(a[p1], a[p2])) {
            assist[i++] = a[p1++];
        } else {
            assist[i++] = a[p2++];
        }
    }
        while (p1<=mid){
            assist[i++]=a[p1++];
        }
        while (p2<=hi){
            assist[i++]=a[p2++];
        }
        for(int index=lo;index<=hi;index++){
            a[index]=assist[index];
        }



}

}
MergeTest类:
package suanfa;

import java.util.Arrays;

public class MergeTest {
public static void main(String[] args) {
Integer[] a={8,4,5,7,1,3,6,2};
Merge.sort(a);
System.out.println(Arrays.toString(a));
}
}

录制: untitled2 – Merge.java
录制文件:https://meeting.tencent.com/crm/K0oDw6L726

posted @   申shen  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示