JAVA写冒泡排序和归并排序

冒泡排序和归并排序(JAVA)

1.冒泡排序
//思想:前一个元素和后一个元素比较,若比后一个元素大,则交换两者的位置
int num[]={9,2,4,6,0,8,1};
for(int i=0;i<num.length-1;i++){
    boolean flag=true;
    for(int j=0;j<num.length-i-1;j++){
        if(num[j]>num[j+1]){
            int temp=num[j];
            num[j]=num[j+1];
            num[j+1]=temp;
            flag=false;
        }
    }
    if(flag==true){			//增加检测,若已经排好序直接跳出循环即可,节省时间
        break;
    }
}
2.归并排序
//思想:分治+递归
//merge方法对排序好了的2个数组进行二路归并
public void merge(int arr[],int left,int M,int right){//M是左侧数组的最右侧元素,         													right为数组长度-1
    int L[]=Arrays.copyOfRange(arr,left,M+1);//这个方法进行复制包含头不包含尾
    int R[]=Arrays.copyOfRange(arr,M+1,right);
    int i=0;  								//指向L数组
    int j=0;  								//指向R数组
    int k=left;								//划重点啦,这个k的值看清楚了为left,千万不												能是0
    while(i<L.length&&j<R.length){ 			//如果跳出说明有一个数组已经排列完毕,另一个								  若没有排完,则这一部分一定是最大的,后续代码直接添加就可以了
        if(L[i]<R[j]){
            arr[k]=L[i++];					//先arr[k]=L[i],再i++
            k++;
        }else{
            arr[k]=R[j++];
            k++;
        }
    }
    while(i<L.length){
        arr[k]=L[i++];						//对未排序完全的进行添加
        k++;
    }
    while(j<R.length){
        arr[k]=R[j++];
        k++;
    }
}
//递归算法划分最小排序单位(最后就变成一个一个的数了)
public void mergeSort(int arr[],int left,int right){
    if(left==right){
        return;					//递归算法必须有结束递归的条件,否则一直执行
    }else{
        int mid=(left+right)/2;
        mergeSort(arr,left,mid);
        mergeSort(arr,mid+1,right);
        merge(arr,left,mid,right);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值