归并排序核心思想

1、数组的拆分,使用递归方式进行拆分

2、归并,使用临时数组进行存储排序好的数据, 最后与原始数据进行替换

代码如下,具体的图流程,网上一抓一大把

package mainimport "fmt"func main() {arry := []int{2, 3, 1, 8, 5, 6}mergeSort(arry, 0, len(arry)-1)fmt.Println("arry:", arry)
}func mergeSort(arry []int, l, r int) {if l >= r {return}// mid := l + (r-1)/2  错误// 获取mid生成方式使用 l +r /2,mid := (l + r) / 2mergeSort(arry, l, mid)mergeSort(arry, mid+1, r)sort(arry, l, mid, r)
}func sort(arry []int, l, mid, r int) {i := lj := mid + 1 // j是第二个数组的开始temp := make([]int, 0)// 左右边界都没有出界for i <= mid && j <= r {if arry[i] <= arry[j] {temp = append(temp, arry[i])i++} else {temp = append(temp, arry[j])j++}}// 左边界出界for i > mid && j <= r {temp = append(temp, arry[j])j++}// 有边界出界for i <= mid && j > r {temp = append(temp, arry[i])i++}//重新赋值给arryfor k, v := range temp{arry[l+k] = v}
}

归并排序-Golang相关推荐

  1. 获取用户列表为空_数据结构和算法(Golang实现)(15)常见数据结构-列表

    列表 一.列表 List 我们又经常听到 列表 List 数据结构,其实这只是更宏观的统称,表示存放数据的队列. 列表 List:存放数据,数据按顺序排列,可以依次入队和出队,有序号关系,可以取出某序 ...

  2. vrp 节约算法 c++_数据结构和算法(Golang实现)(8.1)基础知识-前言

    基础知识 学习数据结构和算法.我们要知道一些基础的知识. 一.什么是算法 算法(英文algorithm)这个词在中文里面博大精深,表示算账的方法,也可以表示运筹帷幄的计谋等.在计算机科技里,它表示什么 ...

  3. golang 排序_常用排序算法之冒泡排序

    周末无事,带娃之余看到娃娃在算数,想到了排序-尝试着把几种常用的排序算法跟大家聊一聊,在分析的后面我会用GoLang.PHP和JS三种语言来实现下. 常见的基于选择的排序算法有冒泡排序.插入排序.选择 ...

  4. Golang sort 排序

    1.前言 开发过程中,我们经常需要对元素进行排序,使用 Go 我们可以轻松实现. Go 内置 sort 包中提供了根据一些排序函数可对任何序列进行排序,并提供自定义排序规则的能力. sort 包实现了 ...

  5. golang面试题题目归纳

    golang面试题题目归纳 2021.06.01 defer 2021.06.02 go的调度 1.多进程/多线程产生的问题 2. "内核态 "线程和" 用户态 &quo ...

  6. Golang开发工程师面试题整理

    Go语言 Go语言中数组和切片的区别是什么?它们可以相互转化吗? 切片是指针类型,数组是值类型: 数组的长度是固定的,而切片不是(切片可以看成动态的数组): 切片比数组多一个容量(cap)属性: 切片 ...

  7. 算法和数据结构(golang语言实现)

    算法和数据结构(golang语言实现) 第1节 选择.冒泡.插入.复杂度 选择排序 选择排序 时间复杂度为O(N^2) 额外空间复杂度O(1) 过程: arr[0-N-1]范围上,找到最小值所在的位置 ...

  8. golang大厂面试1

    golang大厂面试 Golang字节面试经验分享 第一面 面试官首先介绍说会有几轮面试 算法题 1.1 将整数转换二进制 然后将负数变成 例子 例如,n = 1(1:1 的二进制表示) 例如,n = ...

  9. golang大厂面试2

    golang大厂面试 滴滴 写个二分查找 以下是一个简单的二分查找算法的 Go 语言实现: package mainimport "fmt"// 二分查找函数 func binar ...

最新文章

  1. 为什么防火墙透传不过去VLAN11?
  2. java spring包_java 自定义加载器,加载spring包,动态加载实现,jar包隔离,tomcat加载webapp方式...
  3. nsoutlineview 搜索_阿里巴巴搜索推荐广告三位一体的在线服务体系
  4. 阿里内推算法岗位编程笔试题
  5. SHA256算法原理详解图
  6. 正找工作的同学看过来——Java项目经验篇
  7. 实对称矩阵的特征向量矩阵为酉矩阵
  8. VS2017 插件的安装目录
  9. 【Multisim仿真】利用运算放大器产生方波、三角波发生器
  10. linux如何打出罗马数字,ps罗马数字怎么打
  11. 细节复盘2 (图片放足够大高斯模糊< style > scopedvue打开新的页面轮播图抖动的问题 translateZ、translateY、垂直水平居中)2020-8-1
  12. c语言程序设计工作任务,C语言程序设计任务驱动教程
  13. C语言基本变量类型及变量的定义
  14. PS 滤镜算法原理——浮雕效果
  15. ev4视频转换为mp4工具使用教程
  16. 计算机网络安全评估,计算机网络系统安全性分析及评估
  17. 《视频解密》中文版(第四版) 第五章 模拟视频接口
  18. mini2440 linux驱动程序,基于linux的mini2440 led驱动及应用程序
  19. 企业数字化办公利器——华为云桌面Workspace
  20. 第8章 泛型 《Kotlin 项目实战开发》

热门文章

  1. Linux下硬盘分区的最佳方案(转)
  2. 全国综合性地方门户网站系统
  3. 城市智能管网建设,怎么少得了传感器?
  4. [yolov5] yolo的数据标签格式
  5. python设计一个验证用户密码程序_Python如何实现一个登陆验证(文件验证)
  6. Java与数据库连接——JDBC(JDBC概念理解+JDBC搭建使用六步骤,作者君倾情奉上,爆赞!)
  7. 云客网教你让网站排名更好的方法
  8. K-Core算法 (文献笔记)
  9. iFonts字体管理工具(神同步PS操作)
  10. 以模拟移动为思路的战棋范围及路径生成