数据结构与算法 - 3 常见排序算法

本文详细介绍了常见的五种排序算法:冒泡排序、选择排序、插入排序、希尔排序和快速排序。针对每种算法,文章提供了排序原理、时间复杂度分析以及示例代码,帮助读者深入理解各种排序算法的实现和效率差异。
摘要由CSDN通过智能技术生成

3. 常见排序算法

3.1 冒泡排序

列表每两个相邻的数,如果前面的数比后面大,则交换这两个数

每一趟完成,无序区域减少一个数,有序区域增加一个数

代码的关键点:趟、无序区范围;算法复杂度:O(n*n)

代码示例:

//Test example

//func main() {
//	nums := []int{2, 14, 11, 15, 35, 1, 9, 6, 100, 26, 7, 8}
//	a := BubbleSort(nums)
//	fmt.Println(a)
//}

func BubbleSort(nums []int) []int {

	for i := 0; i < len(nums); i++ {
		change := false
		for j := 0; j < (len(nums) - 1); j++ {
			if nums[j] > nums[j+1] {
				nums[j], nums[j+1] = nums[j+1], nums[j]
				change = true
			}
		}
		if change == false {
			fmt.Println(nums) //演示排序过程,如果排好提前结束
		}
	}
	return nums
}

3.2 选择排序

将其它数字与第一个元素相比较,如果比它小则与其交换位置,然后再将其它数字与第二个元素相比较,若小,再交换位置,以此类推

时间复杂度:O(n*n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值