分类 算法 中的文章

跳表

跳表这个东西第一次接触还是在16年准备深入了解 redis 的时候才知道的,以前学数据结构和算法都是浅尝辄止的。 在2年前自己实现了一次,磕磕绊绊最终写完。 这次看算法的时候用 go 再次自己实现一次,还是有点慢,不过思路清晰多了。 这个东西让我面试肯定过不了,了解原理就够了,对于我来说 1 2 3 4 5 6 7 8……

阅读全文

快排和归并排序

代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 func quickSort(intArr []int) []int { if len(intArr) <= 1 { return intArr } val := intArr[0] var left []int var middle []int var right []int middle = append(middle, val) for i := 1; i < len(intArr); i++ { if intArr[i] > val { right = append(right, intArr[i]) } else if intArr[i] < val { left = append(left, intArr[i]) } else { middle = append(middle, intArr[i]) } } intArr = append(left, append(middle, right...)...) //return intArr left……

阅读全文

插入排序

最近在晚上会看一些算法的东西,最近可能看的比较细外加笔记做得很好。所以弄得比较踏实。 看到排序部分了,插入、冒泡和选择排序,冒泡和选择自己写的比较多,插入排序几乎没怎么写。 所以今晚就自己实现了一份插入排序,写了二十几分钟,陌生的东西写的比较慢,另一个问题是应该提前用笔纸写写画画的,……

阅读全文

dijkstra算法 PHP 实现

20171119 利用周末优化了一下代码。这次完全默写了出来。感觉好多了 这个是根据算法图解自己写的,理解的不是很好,注释都在代码里面,过几天再默写一下,好好理解一下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66……

阅读全文

通过快排和归并排序思考分治法

话说以前看过很多算法相关的书,大部分讲的都很模糊,然后直接上代码,当时看似理解了,可是时间一长就忘光光了,以前看书学习的都是如何去做,而自己也没有深入的思考过为何这么做,单纯的就是背下来那种。当学习到一定程度之后,发现基础知识还是非常重要的。 今天要说的就是分治法,什么是分治法,就……

阅读全文

PHP归并排序

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 <?php function sortArr($arr) { if (count($arr) < 2) { return $arr; } $mid = count($arr) / 2; $arr1 = array_slice($arr, 0, $mid); $arr2 = array_slice($arr, $mid, count($arr)); $arr1 = sortArr($arr1); $arr2 = sortArr($arr2); return mergeArr($arr1, $arr2); } function mergeArr($arr1, $arr2) { if (!is_array($arr1)) { $arr1[] = $arr1; } if (!is_array($arr2)) { $arr2[] = $arr2; } $i =0; $j = 0; $arr1Length = count($arr1); $arr2Length = count($arr2); $returnArr = []; while($i < $arr1Length && $j < $arr2Length) { if($arr1[$i] > $arr2[$j]) { $returnArr[] = $arr2[$j]; $j++;……

阅读全文