Go 18.0 专业五


01. 快速排序算法

<h1>1. 快速排序算法</h1> <p>算法描述:是对插入算法的一种优化,利用对问题的二分化,实现递归完成快速排序 ,在所有算法中二分化是最常用的方式,将问题尽量的分成两种情况加以分析, 最终以形成类似树的方式加以利用,因为在比较模型中的算法中,最快的排序时间 负载度为 <strong>O(nlgn)</strong>.</p> <h4>算法步骤</h4> <ul> <li>将数据根据一个值按照大小分成左右两边,左边小于此值,右边大于</li> <li>将两边数据进行递归调用步骤1</li> <li> <p>将所有数据合并</p> <p>package sort</p> <p>import &quot;fmt&quot;</p> <p>func QuickSort(arr []int) []int { if len(arr) &lt;= 1 { return arr } splitdata := arr[0] //第一个数据 low := make([]int, 0, 0) //比我小的数据 hight := make([]int, 0, 0) //比我大的数据 mid := make([]int, 0, 0) //与我一样大的数据 mid = append(mid, splitdata) //加入一个 for i := 1; i &lt; len(arr); i++ { if arr[i] &lt; splitdata { low = append(low, arr[i]) } else if arr[i] &gt; splitdata { hight = append(hight, arr[i]) } else { mid = append(mid, arr[i]) } } low, hight = QuickSort(low), QuickSort(hight) myarr := append(append(low, mid...), hight...) return myarr }</p> <p>//快读排序算法 func main() { arr := []int{1, 9, 10, 30, 2, 5, 45, 8, 63, 234, 12} fmt.Println(QuickSort(arr)) }</p> </li> </ul>

页面列表

ITEM_HTML