数据结构:数组
快速排序是数字排序常用的排序算法,个人理解核心思想是通过选定数组中的一个中间值,比较当前选中的中间值和其他值的大小
将小于中间值的数放在一个数组中,比中间值大的放在另外一个数组中,然后递归该方法,得到两边的排序,最后拼接起来。
时间复杂度:O(nlgn)
具体代码实现如下:
package main import "fmt" /** * @Author KyrieWang * @Description //TODO quicksort 时间复杂度为 O(nlgn) * @Date 9:48 上午 2021/3/29 * @Param * @return */ func QuickSort(arr []int) []int { if len(arr) <= 1 { return arr } startArr := arr[0] lowData := make([]int, 0) highData := make([]int, 0) sameData := make([]int, 0) for i := 0; i < len(arr); i++ { if arr[i] < startArr { lowData = append(lowData, arr[i]) } else if arr[i] > startArr { highData = append(highData, arr[i]) } else { sameData = append(sameData, arr[i]) } } lowData, highData = QuickSort(lowData), QuickSort(highData) //递归进行排序 return append(append(lowData, sameData...), highData...) // append ...追加多个参数 } func main() { data := []int{1, 5, 2, 4, 12, 21, 8, 12, 31, 24, 12, 14, 23} listData := QuickSort(data) fmt.Println(listData) }
你得先看重你自己,否则别人就会当你一钱不值。