快速排序算法
2021/6/18 22:34:21
本文主要是介绍快速排序算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在数据规模不是很大的情况下效率很高,一个简单又经典的算法。
理解了思想不论用什么语言实现起来都是很容易的,下面是用 golang 描述的快速排序算法
package main import ( "fmt" ) func main() { var num = []int{3, 2, 4, 6, 5, 1} num = IntQSort(num, true) fmt.Println(num) } func IntQSort(n []int, order bool) []int { ls := make([]int, len(n)) for i := range n { ls[i] = n[i] } return IntQuickSort(ls, order) } /* 快速排序算法 * ls 排序码数组 * order true 表示升序,false 表示降序 */ func IntQuickSort(ls []int, order bool) []int { tmp := ls[0] left, i := 0, 0 right, j := len(ls)-1, len(ls)-1 d := 1 if left < right { for i < j { if order == true { if d == 1 { if tmp > ls[j] { ls[i] = ls[j] i += 1 d = -1 } else { j -= 1 d = 1 } } else { if tmp < ls[i] { ls[j] = ls[i] j -= 1 d = 1 } else { i += 1 d = -1 } } if i == j { ls[i] = tmp } } else { if d == 1 { if tmp < ls[j] { ls[i] = ls[j] i += 1 d = -1 } else { j -= 1 d = 1 } } else { if tmp > ls[i] { ls[j] = ls[i] j -= 1 d = 1 } else { i += 1 d = -1 } } if i == j { ls[i] = tmp } } } if i == right { IntQuickSort(ls[left:i], order) } else if i == 0 { IntQuickSort(ls[i+1:right+1], order) } else { IntQuickSort(ls[left:i], order) IntQuickSort(ls[i+1:right+1], order) } } return ls }
这篇关于快速排序算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-06小米11i印度快充版ROM合集:极致体验,超越期待
- 2024-10-06【ROM下载】小米11i 5G 印度版系统, 疾速跃迁,定义新速度
- 2024-10-06【ROM下载】小米 11 青春活力版,青春无极限,活力全开
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求