首页 > 其他分享 >Merge sort【1月18日学习笔记】

Merge sort【1月18日学习笔记】

时间:2024-01-18 17:59:45浏览次数:31  
标签:sort mergesort 填入 int 18 ++ mid Merge 数组

点击查看代码
//Merge sort
#include<iostream>
using namespace std;

void merge(int L[], int R[], int A[], int nL, int nR) {//将两个已排序数组合并填入
	int i = 0, j = 0, k = 0;//i,j为未拾取元素索引,k为归并数组索引
	while (i < nL && j < nR) {
		if (L[i] < R[j]) {
			A[k] = L[i];
			i++;
		}
		else {
			A[k] = R[j];
			j++;
		}
		k++;
	}//在两个数组中选取未拾取元素最小者填入归并数组
	while (i < nL) {
		A[k] = L[i];
		i++;
		k++;
	}
	while (j < nR) {
		A[k] = R[j];
		j++;
		k++;
	}//有剩余元素数组全部填入
}

void mergesort(int A[], int n) {
	if (n < 2) return;//中止条件
	int mid = n / 2;//从中间分为两组
	int* L = new int[mid];
	int* R = new int[n - mid];//动态分配

	for (int i = 0; i < mid; i++) L[i] = A[i];//左边填入
	for (int i = mid; i < n; i++) R[i - mid] = A[i];//右边填入

	mergesort(L, mid);  // sorting the left subarray
	mergesort(R, n - mid);  // sorting the right subarray
	merge(L, R, A, mid, n - mid);//归并填入
	delete []L;
	delete []R;//不要忘记删除动态内存
}//时间复杂度:O(nlogn)
 //空间复杂度:O(n)

int main() {
	int A[] = { 2,7,4,1,5,3 };
	mergesort(A, 6);
	for (int i = 0; i < 6; i++)  cout << A[i] << " ";
	cout << endl;
}

标签:sort,mergesort,填入,int,18,++,mid,Merge,数组
From: https://www.cnblogs.com/whvivy/p/17973064

相关文章

  • C# .net中PropertyDescriptor的使用和BindingList的ApplySort排序
    找了好多资料都是java中PropertyDescriptor的使用,至于C#中的都抄袭别人的,又讲不清楚怎么用。官方文档也没不会手把手教你怎么用,经过一下午的研究,结果如下1、找到PropertyDescriptor同一dll下的,使用TypeDescriptor反射出属性的PropertyDescriptorCollection,从这里拿出对应属性的P......
  • GB28181智慧安防视频监控EasyCVR v3.5系统增加录像保存地址的配置
    智慧安防监控EasyCVR视频管理平台能在复杂的网络环境中,将前端设备统一集中接入。在网络传输上,平台支持设备通过4G、5G、WIFI、有线等方式进行视频流的快捷传输,视频流经平台处理后可对外进行多格式的分发,实现多展示终端观看(电脑、大屏、电视墙、手机端等)。国标GB28181协议EasyCVR安......
  • 2024.1.18-每日进度笔记
    今天,我主要尝试了通过摄像头拍照并保存在本地指定文件。 参考:百度文心一言的回复。 <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><title>获取摄像头画面并拍照</title......
  • 1.18学习进度
    1.local模式基本原理   本质:启动一个JVMProcess进程(一个进程里面有多个线程),执行任务task   local模式可以限制模拟spark集群环境的线程数量,即local[N]或local[*]       其中N代表可以使用N个线程,如果不指定N,默认是1个线程       如果是local[*],则代表R......
  • (Python)每日代码||2024.1.18
    m=10a=10print(id(m))print(id(a))'''输出140713874176728140713874176728'''print()a=1b=2c=3d=a+bprint('a(1)\t'+str(id(a)))print('b(2)\t'+str(id(b)))print('c(3)\t'+str(id......
  • 18、nginx访问控制
    1.权限控制指令Nginx中提供了两个用于配置访问权限控制的指令,分别为allow和deny。allow用于设置允许访问的权限deny用于设置禁止访问的权限。在使用时,权限指令后只需跟上允许或禁止的IP、IP段或all即可。其中all表示所有的。单个IP指定作用范围最小,all指定作用范围最......
  • 518. 零钱兑换 II(中)
    目录题目法一、回溯法二、动态规划题目给你一个整数数组coins表示不同面额的硬币,另给一个整数amount表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回0。假设每一种面额的硬币有无限个。题目数据保证结果符合32位带符......
  • Flink 1.18 Standalone 应用模式部署
    本文基于:FlinkJavaDemo1.下载https://dlcdn.apache.org/flink/flink-1.18.0/flink-1.18.0-bin-scala_2.12.tgz2.解压mkdir/usr/flinktar-zxvf/home/flink-1.18.0-bin-scala_2.12.tgz-C/usr/flink/3.推送端运行netcatnc-lp78784.将Maven的包复制到flink的lib目......
  • 18.接口鉴权的多种情况与 解决方案
    接口鉴权是什么 身份认证接口鉴权通用的解决方案 认证信息的获取认证信息的携带@startumlscale800if(登录成功?)then#pink:响应错误;detachendif#palegreen:响应认证信息;#palegreen:携带认证信息发起其他请求;@enduml后端接口鉴权常用......
  • 国标GB28181安防视频监控EasyCVR级联后上级平台视频加载慢的原因排查
    国标GB28181协议安防视频监控系统EasyCVR视频综合管理平台,采用了开放式的网络结构,可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力,同时还具备权限管理、设备管理、鉴权管理、流媒......