随笔分类 - 算法基础
计算机编程常用基础算法讲解与例题汇总
摘要:标签 非稳定排序、原地排序、比较排序 基本思想 直接选择排序中,第一次选择经过了$n - 1$次比较,只是从排序码序列中选出了一个最小的排序码,而没有保存其他中间比较结果。所以后一趟排序时又要重复许多比较操作,降低了效率。J. Willioms和Floyd在1964年提出了堆排序方法,避免这一缺点。
阅读全文
摘要:标签 非稳定排序、原地排序、比较排序 基本思想 冒泡排序是在相邻的两个记录进行比较和交换,每次交换只能上移或下移一个位置,导致总的比较与移动次数较多。快速排序是目前应用最广泛的排序算法之一。快速排序又称分区交换排序,是对冒泡排序的改进,快速排序采用的思想是分治思想。 每次从待排序区间选取一个元素(一
阅读全文
摘要:标签 非稳定排序、原地排序、比较排序 基本思想 希尔排序是希尔(Donald Shell) 于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是直接插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破$O(n^2)$的第一批算法之一。它与插入排序的不同之处在于,它会
阅读全文
摘要:算法背景 迷宫问题和棋盘马走日问题都是搜索问题(找路径),一般采用DFS和BFS两种搜索算法都可以,如果要求是最短路径,则一般BFS解题,DFS则需要记录所有的可能路径,找到最短的那条。一般来说,迷宫问题的前进方向为四个(上下左右),障碍物直接用1和0来判断。而马走日则有特殊的障碍物判断规则,前进方
阅读全文
摘要:螺旋矩阵 方形矩阵 问题描述 给定一个$N \times N$的方阵,其中元素为自然数,排列规则为按照顺时针螺旋方向单调递增(起始值为$1$,终点值为$N$)。举例如下: 若n = 3,螺旋矩阵为: 1 2 3 8 9 4 7 6 5 若n = 4,螺旋矩阵为: 1 2 3 4 12 13 14 5
阅读全文
摘要:概念 质数,又名素数,是只能被1或者自身整除的自然数(不包括1)。 判断是否是质数最直观和简单的方法就是从2开始直接除,能除尽(余数为0)就不是质数。 整数的唯一分解定理 任何一个大于$1$的自然数N,如果N不为质数,都可以唯一分解成有限个质数的乘积:$N = P1^{a1} * P2^{a2} *
阅读全文
摘要:简单四则运算之逆波兰式解法 前提:数字为单个0~9,只有四则运算符,不含括号优先级(数字和优先级均可拓展) 易错点 1. 字符串读取 不含空格:整行读取 开辟char数组,以字符串形式 %s 读取,以空白符为分割; 含有空格:单个字符逐个读取 开辟char字符, %c 读取; 【注意 %c 的读取不
阅读全文

浙公网安备 33010602011771号