首页 > 其他分享 >归并排序

归并排序

时间:2024-02-04 23:13:15浏览次数:18  
标签:归并 arr int mid io import 排序

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class 归并排序 {
    public static int[] tmp = new int[Integer.MAX_VALUE];
    public static void mergeSort(int[] arr, int l, int r){
        if (l >= r){
            return;
        }
        // 确定分界点
        int mid = l + r >> 1;
        int i = l, j = mid + 1;
        // 递归分区间
        mergeSort(arr,l,mid);
        mergeSort(arr,mid+1,r);
        //归并内容
        int k = 0;
        while (i <= mid && j <= r){
            if (arr[i] < arr[j]){
                tmp[k++] = arr[i++];
            }else {
                tmp[k++] = arr[j++];
            }
        }
        while (i <= mid){
            tmp[k++] = arr[i++];
        }
        while (j <= r){
            tmp[k++] = arr[j++];
        }
        // 回归原本数组
        for (int m = 0,n = l; n <= r; m++,n++) {
            arr[n] = tmp[m];
        }
    }
    public static void main(String[] args) throws IOException {
        int n;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        n = Integer.parseInt(br.readLine());
        int[] arr = new int[n];
        String[] strings = br.readLine().split(" ");
        for (int i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(strings[i]);
        }
        mergeSort(arr,0,n-1);
        for (int i = 0; i < n; i++) {
            System.out.print(arr[i]+" ");
        }

    }
}

标签:归并,arr,int,mid,io,import,排序
From: https://www.cnblogs.com/YaoMa/p/18007192

相关文章

  • 【算法专题】排序详解
    各种排序快速排序、归并排序、桶排序、堆排序1、快速排序(quick_sort)时间复杂度:\(O(nlogn)\)//快速排序模版voidquick_sort(intq[],intl,intr)//数组,左端点,右端点{if(l>=r)return;//“>>”:右移运算符,相当于除以2intx=q[l+r>>1],......
  • 深入浅出Java多线程(七):重排序与Happens-Before
    引言大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第七篇内容:重排序与Happens-Before。大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!!在上一篇文章中,我们简单提了一下重排序与Happens-Before。在这篇文章中我们将深入讲解一下重排序与Happens-Before,然......
  • 洛谷排序
    排序:从小到大冒泡排序--->时间超过109 就超时查看代码#include<bits/stdc++.h>//从小到大usingnamespacestd;typedeflonglongintll;constintN=1e5+6;lla[N];lln;intmain(){cin>>n;for(inti=1;i<=n;i++)cin>>a[i];for(inti=1;i<=n;i++){for(int......
  • 快速排序算法
    快速排序算法的核心思想是分治法(DivideandConquer)。快速排序算法通过以下步骤实现排序:1.选择基准值 :从数列中选择一个元素作为基准值(pivot),通常选择第一个元素。2.分区操作 :重新排列数列,使得所有小于基准值的元素都移到基准的前面,而所有大于基准值的元素都移到基准的后......
  • 第二章:基础查询与排序
    第二章:基础查询与排序2.1SELECT语句基础2.1.1从表中选取数据SELECT语句从表中选取数据时需要使用SELECT语句,也就是只从表中选出(SELECT)必要数据的意思。通过SELECT语句查询并选取出必要数据的过程称为匹配查询或查询(query)。基本SELECT语句包含了SELECT和FROM两个子句(clause)......
  • 算法入门:排序算法
    文章目录1.冒泡排序2.选择排序3.插入排序4.希尔排序5.归并排序6.快速排序7.堆排序 1.冒泡排序思想:比较相邻元素:从数组的第一个元素开始,比较相邻的两个元素,如果它们的顺序不对(比如前面的元素大于后面的元素),则交换它们的位置。一轮遍历:一轮比较和可能的交换后,最......
  • 第十五节:排序算法详解3(希尔排序、计数排序、桶排序、基数排序)
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......
  • [转帖]SQL SERVER--- 排序规则、数据类型
    https://zhuanlan.zhihu.com/p/162933497 一、排序规则有时候我们向数据库插入文本时,会出现乱码“?”,这时有可能是我们创建数据库没有设置好排序规则以Chinese_PRC_CI_AS为例前半部分Chinese_PRC指的是针对大陆简体字unicode的排序规则后半部分的含义为:_BIN二进......
  • 冒泡排序
    importjava.sql.SQLOutput;importjava.util.Arrays;importjava.util.Scanner;//冒泡排序publicclasstest{publicstaticvoidmain(String[]args){int[]a={5,4,6,8,9,1,7,2,3};intarray[]=sort(a);System.out.println(Arrays.to......
  • 力扣 34. 在排序数组中查找元素的第一个和最后一个位置
    Problem: 34.在排序数组中查找元素的第一个和最后一个位置思路找到大于等于target的下标,然后遍历之后的数组,找到最后的下标。classSolution{public:intf(vector<int>&nums,inttarget){intl=0,r=nums.size()-1;intmid=floor(l+(r-l)*1.0/2);......