
算法学习
苦心僧
这个博客不更新了
展开
-
太原理工大学数据结构实验报告
太原理工大学数据结构实验报告 1.设有 n 个人围坐在一个圆桌周围,现从第 s 个人开始报数,数到第 m 的人出列,然后从出列的下一个人重新开始报数,数到 m 的人又出列,如此重复,直到所有的人全部出列为止。Josephus 问题是:对于任意给定的 n,m,s,求出按出列次序得到的 n 个人员的顺序表。 #include <stdio.h> #include <malloc.h> typedef struct node{//单链表节点结构 int date; s原创 2020-12-30 21:25:46 · 3197 阅读 · 0 评论 -
数据结构--排序复习
数据结构排序 各排序综述: 一、直接插入排序 R[0] = R[i]; //设置哨兵 for(j = j-1; R[0].key < R[j].key; --j); //从后往前找 //循环结束明R[i]的插入位置为j+1 R[j+1] = R[j] //查找过程中关键字不小于R[i].key的记录,查找同时往后移 整体代码: void InsertSort(SqList &L){ //对顺序表L作直接插入排序 for( i = 2; i <= L.length; ++原创 2021-01-03 22:09:59 · 281 阅读 · 0 评论 -
递归
递归 1.基线条件和递归条件 递归条件指的是函数调用自己 基线条件指的是函数不再调用自己,从而避免形成无限循环 2.栈 这种数据结构称为栈原创 2020-08-17 10:08:13 · 125 阅读 · 0 评论 -
选择排序
选择排序 1.内存的工作原理 计算机提供储存空间,需要将数据储存到内存时,计算机给你一个存储地址,需要存储多项数据时,有两种基本方式——数组和链表。但它们并非都适用所有的情形,因此知道它们的差别很重要。接下来介绍数组和链表以及它们的优缺点。 2.数组和链表 数组的缺点: 所规定内存可能不足以存放所有的数据,还得转移 额外请求的位置可能根本用不上,这将浪费内存 链表的缺点: 在需要读取链表的最后一个元素时,你不能直接读取,因为你不知道它所处的地址,必须先访问元素#1,从中获取元素#2的地址,再访问元素#2原创 2020-07-07 16:52:04 · 166 阅读 · 0 评论 -
二分查找
1.二分查找 假设你要在字典中查找一个单词,而该字典包含240 000个单词, 你认为每种查找最多需要多少步? 如果要查找的单词位于字典末尾,使用简单查找将需要240 000步。使用二分查找时,每次排除一半单词,直到最后只剩下一个单词。 因此,使用二分查找只需18步——少多了! 一般而言,对于包含n个元素的列表,用二分查找最多需要log2n步,而简单查找最多需要n步。 编写二分查找法的Java代码: int low = 0;//数组的开始项 int high = array.length - 1;//数组的原创 2020-07-05 11:33:57 · 1354 阅读 · 0 评论 -
算法基础【一】
一些有用的算法 数值算法,比如随机化、分解因式、处理质数、数值积分 熟练操作常见的数据结构的方法,比如堆、树、平衡树、B数 排序和搜索 网络算法,比如最短路径、生成树、拓扑排列和流计算 一些常规的问题解决技巧 暴力或者穷举搜索 分治法 回溯法 递归 分支界限 贪心算法和爬山法 最小花费算法 缩小范围 启发式算法 就我个人而言,算法只是一种乐趣,它们就像填字游戏或者数独一样。我喜欢组成一个复杂的算法,倒一些数据进去,然后看到一个美丽的三维图形、一条匹配一系列点的曲线,或者一些其他优雅的答案出现。我喜原创 2020-08-19 11:18:08 · 161 阅读 · 0 评论