司徒正美

Results 176 comments of 司徒正美

```javascript function findWords(board, words) { var visited = new Array(board.length).fill(0).map(function (el, i) { return new Array(board[0].length).fill(false) }) var root = new TrieNode().buildTrie(words) var res = [] for(var i = 0;...

https://segmentfault.com/a/1190000018554989

## 选择排序 ```javascript function selectSort(array) { var n = array.length; for (var i = 0; i < n; i++) { var minIndex = i; //保存当前最小数的索引 for (var j = i...

## 插入排序 ```javascript function insertSort2(array) { var n = array.length for (var i = 1; i < n; i++) { //[i,n-1]是无序区 var target = array[i]; if (target < array[i -...

## 希尔排序 ```javascript function shellSort(array) { //生成增量序列 3x+1 [1, 4, 13, 40, 121, 364, 1093, 3280, 9841] var n = array.length, gaps = [1], gap = 1; while (true) {...

## 归并排序 ```javascript function mergeArray(a, b) { //n, m分别为a,b的最后索引; i为a的索引,j为b的索引,k为c的索引 var n = a.length - 1, m = b.length - 1, i = 0, j = 0, k = 0,...

刚才我们是从上到下进行归产排序,我们的思路总是想着左边要合并右边。如果们一开始就把数组的每一个元素都当成一个微型数组,然后两两合并,再继而四四合并,一直它的长度靠近原数组长度。这样排序就完成了。 ![image](https://user-images.githubusercontent.com/190846/75106024-8c576200-5654-11ea-8c0b-c6c07a10cc1c.png) ```javascript function mergeArray(a, first, mid, last, temp) { var i = first, j = mid + 1; var m = mid, n = last; var k = 0;...

### 三路快排 快排是二路划分的算法。如果待排序列中重复元素过多,也会大大影响排序的性能。这时候,如果采用三路划分,则会很好的避免这个问题。 https://blog.csdn.net/lw_power/article/details/77986602 https://blog.csdn.net/jlqCloud/article/details/46939703 ```javascript function quickSort3Ways(arr, left, right) { if (left >= right) { return; } var lt = left; var gt = right; var i = left...

### 最大组合数问题 给一个非负整数数组,让它排序后合并后得到的数字最大,比如[3, 30, 34, 5, 9]排序成[9, 5, 34, 3, 30],得到的数9534330为最大。 思路:我们先比较相邻两个数,它们组合后的两个方式的大小, ```javascript [3, 30, 34, 5, 9]. sort(function(a, b) { var v1 = Number(a + "" + b) var...

## 计数排序 ```javascript function countSort(arr) { var max = arr[0], min = arr[0], n = arr.length; for (var i = 0; i < n; i++) { if (arr[i] > max)...