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