面试算法基础
文章平均质量分 65
golang实现经典面试算法
github仓库
https://github.com/jackzcai/golang-interview
Trueno.86
let there be light
展开
-
Golang实现计数排序 Day4
计数排序是一种线性时间的整数排序算法。如果数组的长度为n,整数范围为k,对于k远小于n的场景,那么计数排序的时间复杂度优于其它基于比较的排序算法。原创 2023-04-08 14:16:20 · 72 阅读 · 0 评论 -
插入排序和希尔排序 Day3
因为是对直接插入排序的优化,所以首先我们需要将其进行预排序,预排序之后,当前的序列是相对比较有序的,我们再进行直接插入,这样就达到了简化时间复杂度的操作。同时也就达到了对于比较有序的序列的排序。原创 2023-04-07 23:02:41 · 36 阅读 · 0 评论 -
golang归并排序+冒泡排序 Day2
归并排序也是一种基于分治法的排序算法。为了排序长度为n的数组,就先排序两个长度为n/2的子数组,然后合并这两个排序的子数组。冒泡排序是一种简单的排序算法,它也是一种稳定排序算法。其实现原理是重复扫描待排序序列,并比较每一对相邻的元素,当该对元素顺序不正确时进行交换。一直重复这个过程,直到没有任何两个相邻元素可以交换,就表明完成了排序。原创 2023-04-06 18:40:17 · 76 阅读 · 0 评论 -
golang快速排序 Day1
基本思想是分治法,类似归并排序那样,不同的是快速排序划分最后不需要merge。随机选取一个元素作为中间值,然后对数组进行分区,使所有比中间值的数在中间值左边,所有比中间值大的数在数组的右边。接下来对中间值左右两侧的子数组用相同的步骤排序,直到子数组中只有一个元素为止。(也就是start=end的时候)分区的核心思想是随机选一个下标,将该数字作为中间值交换到数组的子数组或者数组的尾部。维护两个指针,p1指针始终指向已经发现的最后一个小于中间值的数,p2指针用于遍历数组中的每一个数。原创 2023-04-05 22:51:40 · 102 阅读 · 1 评论