![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
非著名奶茶爱好者
欢迎大家交流~
展开
-
左神算法2(堆,堆排序)
1.堆大根堆: 这个父比它下边的所有子都大向上移动// 向上调整成大根堆。大根堆:这个父比它下边的所有子都大// 某个数现在处于index位置,往上继续移动function heapInsert(arr:number[],index:number) { // 循环中止条件,走到最头了0了或者不再比父亲大了 while (arr[index] > arr[(index - 1) / 2]) { // 如果比他父亲大,就交换 swap(arr,in原创 2021-05-10 22:00:57 · 168 阅读 · 1 评论 -
左神算法1(递归求最大值,归并排序,快速排序)
1.递归求最大值取中间的数,两边的数分别找出最大值,再将这两个数进行比较// 递归求最大值function process(arr:number[],L:number,R:number) { if (L==R) { // 如果这个范围只有一个数,直接base case,递归的结束方式 return arr[L] } // 取中间的数,两边的数分别找出最大值,再将这两个数进行比较 let mid = L + ((R-L) >> 1) // 中点原创 2021-05-07 21:08:15 · 451 阅读 · 0 评论 -
算法 - 插值排序
// 插值排序function swap(arr, a, b) { arr[a] = arr[a] ^ arr[b]; arr[b] = arr[a] ^ arr[b]; arr[a] = arr[a] ^ arr[b];}var arr1 = [2, 3, 5, 4, 1, 6, 7];for (var i = 1; i < arr1.length; i++) { for (var j = i - 1; j >= 0 && arr1[j]原创 2021-05-06 22:32:54 · 143 阅读 · 0 评论 -
算法 - 异或
// 把奇数个摘出来var arr = [1, 1, 1, 1, 2, 2, 4, 4, 4];var eor = 0;for (var i = 0; i < arr.length; i++) { eor ^= arr[i]; // 结合律,偶数的先异或}console.log(eor);原创 2021-05-06 22:31:49 · 62 阅读 · 0 评论 -
算法 - 背包问题
背包问题原创 2021-04-24 16:45:47 · 64 阅读 · 0 评论 -
堆排序
1.原理2.代码实现def sift(li,low,high): """ li: 列表 low: 堆的根节点位置 high: 堆的最后一个元素的位置 """ i = low #i最开始指向根节点 j = 2 * i + 1 #j开始是左孩子 tmp = li[low] #把堆顶存起来 while j <= high: #只要j位置有数 if j + 1 <= high and li[j+1] >原创 2021-01-17 20:58:03 · 82 阅读 · 0 评论 -
二分查找
1.定义2.思维导图第一种情况第二种情况3.完整代码def binary_search(li,val): left = 0 right = len(li)-1 while left <= right: mid = (left+right)//2 #注意是整除 if li[mid] > val: right = mid - 1 elif li[mid] < val:原创 2020-12-31 11:57:26 · 73 阅读 · 0 评论 -
常见排序算法2之快速排序
1.快速排序原理2.快速排序框架3.快速排序步骤1.先将一个数排好顺序(一般是第一个数)代码如下def patition(li,left,right): tmp = li[left] while left < right: while left < right and li[right] >= tmp: #从右面找比tmp小的数 right -= 1 #往左走一步 li[left] = li[right原创 2020-12-31 11:37:21 · 148 阅读 · 0 评论 -
递归-汉诺塔游戏
汉诺塔游戏介绍汉诺塔(益智玩具):汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。递归特点:调用自身,有结束条件目标柱为C的相关代码# 1、有三根相邻的柱子,标号为A,B,C# 2、A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘。# 3、现在把所有盘子一个原创 2020-12-22 20:31:19 · 159 阅读 · 0 评论 -
常见排序算法1
1.冒泡排序原理*每一趟把最大的排在最后代码如下def pao(li): for i in range(len(li)-1): for j in range(len(li)-1-i): if li[j]>li[j+1]: temp = li[j] #交换位置,大的放后边 li[j] = li[j+1] li[j+1] = tempnewli .原创 2020-12-28 19:11:01 · 127 阅读 · 1 评论