登录
首页 >  Golang >  Go教程

Go语言实现常用排序算法的示例代码

来源:脚本之家

时间:2022-12-31 10:57:54 178浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《Go语言实现常用排序算法的示例代码》,介绍一下算法、排序,希望对大家的知识积累有所帮助,助力实战开发!

排序算法是在生活中随处可见,也是算法基础,因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题,可以说是每个程序员都必须得掌握的了。为了方便大家学习,花了一天的时间用Go语言实现一下常用的算法且整理了一下,如有需要可以参考。

冒泡排序

思路:从前往后对相邻的两个元素依次进行比较,让较大的数往下沉,较小的网上冒,即每当两个相邻的元素比较后发现他们的排序要求相反时,就将它们互换。

时间复杂度:O(N^2)

空间复杂度:O(1)

func main() {
	fmt.Println(bubbleSort([]int{2, 4, 1, 6, 3}))
}

func bubbleSort(list []int) []int {
	lenth := len(list)
	for i := 0; i  list[j]{//如果前边的大于后边的
				list[j-1], list[j] = list[j], list[j-1]//交换数据
				exchange = true
			}
		}
		if !exchange {
			break
		}
	}
	return list
}

快速排序

思路:以一个基准数将数组拆分为两组,一边大于这个数,一边小于这个数,再最左右两个组重复这个过程,直到各个区域只有一个数。

时间复杂度:O(nlogn)

空间复杂度:O(1)

func quickSort(list []int) []int {
	length := len(list)
	if length  base {
			right  = append(right, list[i])
		} else {
			left = append(left, list[i])
		}
	}
	left, right  = quickSort(left), quickSort(right)
	return append(append(left, base),right...)
}

选择排序

思路:首先找到数组中的最小元素,然后将这个最小元素和数组的第一个元素交换位置,如果第一个元素就是最小元素,就和自己交换位置;再次,在剩下的元素中找到最小元素和数组中的第二个元素交换位置,如此往复,直到将整个数组排序,一句话总结就是,不断在剩余元素中找最小元素。

时间复杂度:O(n^2)

空间复杂度:O(1)

func selectSort(list []int) []int {
	length := len(list)

	for i := 0; i 

插入排序

思路:与选择排序一样,当前索引左边的所有元素都是有序的,但是他们的最终位置还不确定,为了给更小的元素腾出空间,他们可能会被移动,但是当索引到达数组的末端,数组排序就完成了。

时间复杂度:O(N^2)

空间复杂度:O(1)

func insertSort(list []int) []int {
	length := len(list)
	for i := 0; i  0; j-- {
			if list[j] > list[j-1] {
				break
			}
			list[j], list[j-1] = list[j-1], list[j]
		}
	}
	return list
}

排序思路算法几乎一样。 暂时就介绍这几种常用的也是面试中经常问道的排序算法。

好了,本文到此结束,带大家了解了《Go语言实现常用排序算法的示例代码》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:脚本之家 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表