iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Golang排序和查找使用方法介绍
  • 345
分享到

Golang排序和查找使用方法介绍

Golang排序和查找Golang查找Golang排序 2022-12-16 18:12:45 345人浏览 八月长安
摘要

目录排序的介绍交换式排序法二维数组的介绍二维数组的应用场景二维数组快速入门二维数组的使用排序的介绍 排序是将一组数据,依指定的顺序进行排列的过程。 排序的分类: 1.内部排序: 指将

排序的介绍

排序是将一组数据,依指定的顺序进行排列的过程。

排序的分类:

1.内部排序:

指将需要处理的所有数据都加载到内部存储器中进行排序。

包括(交换式排序法,选择式排序法和插入式排序法);

2.外部排序法

数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)。

交换式排序法

交换式排序属于内部排序法,是运用数据值比较后,依判断规则对数据位置进行交换,以达到排序的目的。

交换排序法又可分为两种:

1.冒泡排序法(Bubble sort)

2.快速排序法(Quick sort)

交换式排序法-冒泡排序法

冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后部移向前部(从下标较大的单位移向下标较小的单元),就像水底下的气泡一样逐渐向上冒。

因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断是否进行过交换。从而减少不必要的比较(优化)。

// 冒泡排序
func BubbleSort(arr *[5]int){
  fmt.Println("排序前arr=",(*arr))
  temp := 0
  // 冒泡排序
  for i:=0;i<len(*arr)-1;i++{
	 for j:=0;j<len(*arr)-1-i;j++{
		if(*arr)[j] > (*arr)[j+1]{
			// 交换
			temp = (*arr)[j]
			(*arr)[j] = (*arr)[j+1]
			(*arr)[j + 1] = temp
		}
	 }
   }
   fmt.Println("排序后arr=",(*arr))
}

查找

//顺序查找:方式一
for i := 0;i<len(names);i++{
   if heroName == names[i]{
	  fmt.Printf("找到%v,下标%v \n",heroName,i)
	}else if i==(len(names)-1){
		fmt.Printf("没有找到%v \n",heroName)
	}
}
// 顺序查找:方式二
index := -1
for i := 0;i<len(names);i++{
   if heroName == names[i]{
	  index = i
	}
}
if index != -1{
	fmt.Printf("找到%v,下标%v \n",heroName,index)
}else{
	fmt.Println("没有找到",heroName)
}

二分查找代码实现

func BinaryFind(arr *[6]int,leftIndex int,rightIndex int,findval int){
	// 判断leftIndex 是否大于 rightIndex
	if leftIndex > rightIndex{
		fmt.Println("找不到")
		return
	}
	// 先找到 中间的下标
	middle := (leftIndex + rightIndex)/2
	if(*arr)[middle] > findVal{
		// 说明我们要查找的数,应该在 leftIndex --- middle-1
		BinaryFind(arr,leftIndex,middle-1,findVal)
	}else if(*arr)[middle] < findVal{
		// 说明我们要查找的数,应该在 middle+1 --- rightIndex
		BinaryFind(arr,leftIndex,middle-1,findVal)
	}else{
		// 找到了
		fmt.Printf("找到了,下标为%v \n",middle)
	}
}

二维数组的介绍

多维数组我们只介绍二维数组

二维数组的应用场景

比如我们开发一个五子棋游戏,棋盘就是需要二维数组来表示。

二维数组快速入门

快速入门案例:

请使用二维数组输出如下图形

func main(){
	// 定义、声明一个数组
	var arr [4][6]int
	// 赋初值
	arr[1][2]=1
	arr[2][1]=2
	arr[2][3]=3
	// 遍历二维数组,按照要求输出图形
	for i :=0;i<4;i++{
		for j:=0;j<6;j++{
			fmt.Print(arr[i][j],"")
		}
		fmt.Println()
	}
}

使用方法1:先声明/定义,再赋值

1.语法:var 数组名 【大小】【大小】类型

2.比如:var arr [2][3]int,再赋值

3.使用演示

4.二维数组在内存中存在形式

使用方式2:直接初始化

声明:var 数组名【大小】【大小】类型 = 【大小】【大小】类型{{初始值…},{初始值…}}

赋值(有默认值,比如int 类型的就是0)

使用演示:

var arr3 [2][3]int = [2][3]int{{1,2,3},{4,5,6}}
fmt.Println("arr3=",arr3)

二维数组的使用

二维数组的遍历

双层for循环完成遍历

func main(){
 // 演示二维数组的遍历
 var arr3 = [2][3]int{{1,2,3},{4,5,6}}
 // for循环来遍历
 for i := 0;i<len(arr3);i++{
	for j:=0;j<len(arr3[i];j++){
		fmt.Printf("%v\t",arr3[i][j])
	}
	fmt.Println()
  }
  // for-range来遍历二维数组
  for i,v := range arr3{
	for j,v2 := range v{
	  fmt.Printf("arr3[%v][%v]=%v \t",i,j,v2)
	}
	fmt.Println()
  }
}

for-range方式完成遍历

func main(){
 // 演示二维数组的遍历
 var arr3 = [2][3]int{{1,2,3},{4,5,6}}
 // for循环来遍历
 for i := 0;i<len(arr3);i++{
	for j:=0;j<len(arr3[i];j++){
		fmt.Printf("%v\t",arr3[i][j])
	}
	fmt.Println()
  }
  // for-range来遍历二维数组
  for i,v := range arr3{
	for j,v2 := range v{
	  fmt.Printf("arr3[%v][%v]=%v \t",i,j,v2)
	}
	fmt.Println()
  }
}

二维数组的应用案例

定义二维数组,用于保存三个班,每个班五名同学成绩,求出每个班级平均分,以及所有班级平均分

func main(){
  // 定义一个二维数组
  var scores [3][5]float64
  // 循环的输入成绩
  for i:=0;i<len(scores);i++{
	for j:=0;j<len(scores[i]);j++{
		fmt.Printf("请输入第%d班的第%d个学生的成绩\n",i+1,j+1)
		fmt.Scanln(&scores[i][j])
	}
   }
   // 遍历输出成绩后的二维数组,统计平均分
   totalSum := 0.0 //定义一个变量,用于积累所有班级的总分
   for i := 0;i<len(scores);i++{
		sum := 0.0 // 定义一个变量,用于累积各个班级的总分
		for j := 0; j<len(scores[i]);j++{
			sum += scores[i][j]
		}
		totalSum += sum 
		fmt.Printf("第%d班级的总分为%v,平均分为%v\n",i+1,sum,sum/float64(len(scores[i])))
	}
	fmt.Printf("所有班级的总分为%v,所有班级的平均分为%v\n",totalSum ,totalSum/15)
}

到此这篇关于golang排序和查找使用方法介绍的文章就介绍到这了,更多相关Golang排序和查找内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: Golang排序和查找使用方法介绍

本文链接: https://www.lsjlt.com/news/175125.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Golang排序和查找使用方法介绍
    目录排序的介绍交换式排序法二维数组的介绍二维数组的应用场景二维数组快速入门二维数组的使用排序的介绍 排序是将一组数据,依指定的顺序进行排列的过程。 排序的分类: 1.内部排序: 指将...
    99+
    2022-12-16
    Golang排序和查找 Golang查找 Golang排序
  • Golang排序和查找方法怎么使用
    本文小编为大家详细介绍“Golang排序和查找方法怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Golang排序和查找方法怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。排序的介绍排序是将一组数据...
    99+
    2023-07-04
  • Java算法和排序的介绍及使用
    本篇内容介绍了“Java算法和排序的介绍及使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、前言什么是算法算法是某种集合,是简单指令的集...
    99+
    2023-06-16
  • 顺序查找和二叉查找的详细介绍
    本篇内容主要讲解“顺序查找和二叉查找的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“顺序查找和二叉查找的详细介绍”吧!0.提要勾玄本文主要先介绍查找的概...
    99+
    2024-04-02
  • 重点介绍Golang方法的语法和使用
    Golang作为一门比较年轻的语言,在方法中也有自己独特的实现方式。本文将重点介绍Golang方法的语法和使用。一、方法定义Golang中可以为任何类型定义方法,包括引用类型和非引用类型。方法定义格式如下:func (t Type) met...
    99+
    2023-05-14
  • MySQL限制查询和数据排序介绍
    目录一、限制查询1.指定从第几行起,返回多少行2.取最大值3.取最小值4.分页二、数据排序1.年龄大于10的根据id进行降序排序2.年龄大于10的按照id进行升序排序一、限制查询 我...
    99+
    2024-04-02
  • 详细介绍golang中.()的使用方法
    Golang是一门非常流行的编程语言,在很多领域都有着广泛的应用。在开发过程中,很多时候我们需要将函数作为参数传递给其他函数,这时候就需要用到golang中的.()用法。本文将详细介绍golang中.()的使用方法。什么是.()用法?在go...
    99+
    2023-05-14
  • JavaScript中的Array对象排序方法介绍
    这篇文章主要介绍“JavaScript中的Array对象排序方法介绍”,在日常操作中,相信很多人在JavaScript中的Array对象排序方法介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方...
    99+
    2024-04-02
  • Vuex详细介绍和使用方法
    目录一、什么是Vuex二、运行机制三、创建项目1、使用脚手架搭建Vue项目2、安装Vuex3、启动项目4、配置使用Vuex4.1、创建store文件夹4.2、配置全局使用store对...
    99+
    2024-04-02
  • Golang内置函数使用方法详细介绍
    Golang是一种非常强大的编程语言,其提供许多内置函数以方便开发者进行编程。在本文中,我们将详细介绍Golang内置函数的使用方法,以供开发者参考。make函数make函数主要用于创建一个数据类型的对象(slice、map或channel...
    99+
    2023-05-16
    Golang(Go语言) 内置函数(built-in functions) 使用方法(usage methods)
  • JavaScriptreduce方法使用方法介绍
    目录1. reduce方法的使用2. reduce数组的使用场景2.1 扁平化数组2.2 数组去重2.3 计算数组最大/最小值2.4 数组求和2.5 计算数组中元素的出现次数3. 操...
    99+
    2022-11-13
    JavaScript reduce JS reduce
  • c++自定义sort()函数的排序方法介绍
    目录1. 引言2. 自定义排序规则2.1 重写 < 或 > 运算符2.2 普通函数2.3 仿函数1. 引言 在C++中,sort()函数常常用来对容器内的元素进行排序,先...
    99+
    2024-04-02
  • C#中Dispose和Finalize方法使用介绍
    一、前言 在C#中,由于有了垃圾回收机制的支持,对象的析构和以前的C++有了很大的不同,这就要求程序员在设计类型的时候,充分理解.NET的机制,明确怎样利用Dispose方法和Fin...
    99+
    2024-04-02
  • Golang函数的锁类型介绍和应用方法
    Golang 函数的锁类型介绍和应用方法Go 编程语言是一种高效、可扩展、并发安全的语言,而并发安全正是 Golang 的一大亮点。我们通常会在开发过程中使用锁来确保线程安全,Golang 的标准库提供了多种类型的锁,用于不同的场景。在本文...
    99+
    2023-05-18
    Golang 应用方法 函数锁
  • php中顺序查找的使用方法
    这篇文章主要介绍了php中顺序查找的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php的框架有哪些php的框架:1、Laravel,Laravel是一款免费并且开源...
    99+
    2023-06-14
  • String.format()方法的使用介绍
    String.format() 方法中的 % 符号用作占位符,用于将值插入字符串中。它用于使用特定值(例如整数、浮点数或字符串)格式化字符串。% 符号后面跟着一个字母,指定要插入的值的类型,例如 %d 表示整数,%s 表示字符串。要插入的...
    99+
    2023-09-07
    java 开发语言 spring servlet
  • mysqldump的使用方法介绍
    这篇文章主要介绍了mysqldump的使用方法介绍,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。1、说明mysqldump在库被删除的情况下,无法直接从文件恢复,需要手动新建同名库,才能从文件恢复数据。2、语法shell...
    99+
    2023-06-15
  • AndroidLeakCanary的使用方法介绍
    目录1.LeakCanary 如何自动初始化2.LeakCanary如何检测内存泄漏2.1LeakCanary初始化时做了什么2.2LeakCanary如何触发检测2.3LeakCa...
    99+
    2024-04-02
  • Kotlin ContentProvider使用方法介绍
    目录1、注册ContentProvider2、内容URI内容URI的标准格式通配符3、创建自己的ContentProvider4、访问其他程序中的数据1、注册ContentProvi...
    99+
    2024-04-02
  • Java实现的几个常用排序算法介绍
    本篇内容主要讲解“Java实现的几个常用排序算法介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java实现的几个常用排序算法介绍”吧!1. 选择排序选择排序的基本思想是遍历数组的过程中,以 ...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作