首页 > 编程语言 >Go实现常用的排序算法

Go实现常用的排序算法

时间:2024-09-05 11:46:55浏览次数:10  
标签:arr int 元素 插入 算法 Go 新元素 排序

一、插入排序

1.从第一个元素开始,该元素可以认为已经被排序
2.取出下一个元素,在已经排序的元素序列中从后向前扫描
3.如果该元素(已排序)大于新元素,将该元素移到下一位置
4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
5.将新元素插入到该位置后
点击查看代码
// 插入排序
func insertsort(arr []int) []int {
	//循环多少次,需要插入n-1个,从第二个开始插
	for i:=1; i<len(arr) ; i++ {

		num := arr[i]
		//j是已经排好需要,为什么是i-1,因为需要在已经排好的数据里面插入,要找到插入的位置
		j:=i-1

		//内嵌循环,如果比需要插入数据大就先往后排。
		for j>=0&&arr[j]>num {
			arr[j+1] = arr[j]
			j--

		}
		//插入
		arr[j+1] = num
	}
	return arr
}

二、冒泡排序

1.比较相邻的元素,如果第一个比第二个大,就交换他们两个
2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对,这步做完后,最后的元素会是最大的数。
3.核心就是需要冒泡n-1次,因为每次冒泡筛出一个最大值。
点击查看代码
func bubbleSort(arr []int) []int {
	//外嵌套循环次数为n-1
	n := len(arr)
	for i:=0;i<n-1;i++{
	//内嵌循环,进行两两对比,对比n-1-i次,因为
		for j:=0 ; j<n-1-i;j++ {
			if arr[j]>arr[j+1]{
			//交换位置
			arr[j],arr[j+1] = arr[j+1], arr[j]
			}
}
}
}

标签:arr,int,元素,插入,算法,Go,新元素,排序
From: https://www.cnblogs.com/iruan/p/18398094

相关文章

  • [1058] Integrate points within the same polygons as the centroid
    Tointegratepointswithinaspecificpolygonandsetthecentroidofthepolygonasthenewlocationforthosepoints,youcanusethegeopandaslibraryinPython.Here’sastep-by-stepguide:Importnecessarylibraries:importgeopandasasgpdfromsh......
  • Django中celery的使用(非常简单的用法)
    1、https://www.cnblogs.com/hard-working-Bert/p/14236125.html这里主要展示一个最简单的django中的celery任务,为了让大家都可以用上celery。话不多说,首先给大家看一下我的目录  这里的TestCelery是我的项目名称,CeleryTask是app名称。 windows启动redis服务及修改配置文......
  • 已成功入职小米大模型算法岗!大模型面试其实挺水的,hr听到这些直接过【附面试题PDF】
    大模型面试其实挺水的,hr听到这些直接过这份《小米大模型算法岗面试题+答案详解》已经上传CSDN,还有完整版的大模型AI学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】PDF书籍:完整版本链接获取......
  • 基于C语言的堆排序算法
    一、堆排序概述        堆排序是一种基于二叉堆数据结构的高效排序算法。它具有稳定的时间复杂度为O(nlogn),适用于大规模数据的排序。堆排序具有原地排序的特点,即不需要额外的存储空间,几个指针变量使用O(1)空间,元素交换和堆化操作都是在原数组上进行的。然而,堆排序的......
  • pymongo.errors.ConfigurationError: Server at localhost:27017 reports wire versio
    当你的PyMongo版本比较新时,如当前使用版本为v4.8.0,如果你尝试连接到MongoDBServerv3.4或更早版本,PyMongo可能会引发以下错误:pymongo.errors.ConfigurationError:Serveratlocalhost:27017reportswireversion5,butthisversionofPyMongorequiresatleast6(Mo......
  • 今日算法随笔:三数之和
    题目链接:15.三数之和思路排序+双指针采用排序+双指针的方法来解决三数之和问题。首先对数组进行排序,然后通过双指针法,针对每一个固定的元素,从其后的数组部分寻找符合条件的三元组。这样能够避免重复的三元组,且利用排序的性质来优化查找效率。解题过程方法运用排......
  • DevExpress WPF中文教程:如何解决排序、过滤遇到的常见问题?(一)
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • 数模国赛冲刺 | 预测类创新算法CNN-GRU、CNN-LSTM、CNN-BiGRU、CNN-BiLSTM、CNN-BiGRU
    ​预测算法——CNN-GRU、LSTM、BiGRU、BiLSTM-Attention本文汇总了基于卷积神经网络(CNN)与循环神经网络(RNN)及其变体(如GRU、LSTM、BiGRU、BiLSTM)组合的多种预测算法,深入探讨了这些算法的原理、结构、优缺点以及实际应用场景。此外,本文特别介绍了结合Attention机制的CNN-RNN组合......
  • Nature Communications 单细胞算法 scDist,教你怎么找到重要的细胞亚群与基因!
    生信碱移scDist: 寻找关键细胞亚群与基因的方法单细胞RNA测序(scRNA-seq)使我们能够研究受药物治疗、感染以及癌症等疾病中关键的细胞亚群。为了找到可能影响疾病的细胞亚群乃至基因,我们常常去比较两个或多个组之间显著差异的细胞类型。这里"显著差异"的定义可以是不同方面的,......
  • MongoDB单节点部署与基本操作
    MongoDB7.0单节点部署与MongoDBshell基本操作部署准备:1、操作系统:CentOS7.9 2、在操作系统中,创建一个mongod的用户和用户组,并配置其sudo权限,如果使用root用户可以不考虑准备此项。3、mongodb服务二进制包:mongodb-linux-x86_64-rhel70-7.0.14.tgz。下载地......