![](https://img-blog.csdnimg.cn/2021053123465450.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法基础
本专栏是本人对于Acwing中的算法基础课的内容的一些整理与心得,希望可以和社区的小伙伴们共同进步
pfco
弱小和无知不是生存的障碍,傲慢才是
展开
-
【算法基础】- 二分查找
本文旨在对于个人知识的梳理以及知识的分享,如果有不足的地方,欢迎大家在评论区指出 核心思想 对于二分查找,可以分为两大类,第一种是整数二分,另外一种是浮点数二分,对于整数二分来说,可以有两种方式,第一种二分出的是左边界,第二种二分出的是右边界,下面依次给出二者的模板代码: Go 二分出左边界 l, r := 0, n-1 for l < r { mid := (l + r) >> 1 if a[mid] < x { l = mid + 1 } else { r = mi原创 2021-06-07 22:53:30 · 65 阅读 · 0 评论 -
【算法基础】 - 归并排序
本文旨在对于个人知识的梳理以及知识的分享,如果有不足的地方,欢迎大家在评论区指出 核心思想 归并排序的核心思想主要有以下几步: 找到区间中点mid 将[l, mid]以及[r, mid]分别进行排序 将这两个区间合并为一个区间 时间复杂度分析 归并排序的时间复杂度为O(nlogn)O(nlogn)O(nlogn) 模板代码 Go package main import "fmt" func merge_sort(a []int, l int, r int) { if l >= r { r原创 2021-06-06 22:54:41 · 173 阅读 · 2 评论 -
【算法基础】 - 快速排序
本文旨在对于个人知识的梳理以及知识的分享,如果有不足的地方,欢迎大家在评论区指出 核心思想 快速排序的核心思想主要有以下几步: 确定当前的关键值 将所有大于该关键值的数字放到右边,所有小于该关键值的放到左边 递归的处理左右两边 时间复杂度分析 对于快速排序,其平均时间复杂度为O(nlogn)O(nlogn)O(nlogn),最坏的情况是O(n2)O(n^2)O(n2),主要取决于关键值的选取,一般可以取中间的值作为关键值 模板代码 Go package main import ( "fmt"原创 2021-06-01 23:14:54 · 129 阅读 · 0 评论