
数据结构与算法
文章平均质量分 95
数据结构与算法学习记录
.Voyager
眼有星辰,心有山河。
展开
-
Leetcode-排序-选择排序
原理用通俗的语言来讲,选择排序,就是将数列中最大(小)的数找出来,放到合适的位置,然后在剩下的集合里面继续找最大(小)的数放在合适的位置,如此往复,直到整个数列变为有序位置。与冒泡排序不一样的是,它不是比较相邻的两个数,而是比较某个数与数列中剩下所有数的大小。1.第一轮排序原始数列为:7 3 5 1 9 4第一轮排序首先以第一个数为基数,与剩下的所有数进行比较,找到整个数列中最小的数,然后交换最小数与第一个数的位置。实现代码如下:for i in range(0,len(iList)-1):原创 2020-11-21 21:18:06 · 294 阅读 · 0 评论 -
Leetcode-排序-冒泡排序
冒泡排序(Bubble Sort)是一种很原始的排序方法,就是通过不断交换“大数”的位置达到排序的目的。因为不断出现“大数”类似于水泡不断出现,因此被形象地称为冒泡算法。原理从一组数列(列表)中挑选一个最大的数,如果这个数列比较小,有可能我们一眼就看出谁最大,但是如果数列比较大,那么就不好确定了,冒泡排序不需要直接找出数列中最大的那个数,只需要在两个数中找出最大的就可以了。冒泡算法的原理是比较两个相邻数字的大小,将两个数中比较大的那个数交换到靠后的位置。这样不断交换下去就可以将最大的那个数放到最后的位原创 2020-11-21 21:17:31 · 691 阅读 · 0 评论 -
Leetcode-排序-归并排序
原理给大家讲个故事:“从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事,讲的是从前有座山,山里有座庙,庙里有个老和尚在给小和尚…”,这个故事大家可能都听过,这个故事实际上就体现了递归的思想,每个故事都在调用故事本身。本算法也用了递归思想,首先我们把数列分为left和right两个子数列,然后将left和right两个子数列都变成有序数列,再把他们合并到一起就变成了一个有序数列,那么left和right两子数列如何变成有序的呢,我们将left和right两个子数列分别再分成两部分得到子子数列,然后再将原创 2020-11-21 21:17:02 · 355 阅读 · 0 评论 -
Leetcode-排序-插入排序
原理插入排序实际上跟我们打牌一样,斗地主应该大部分人都会玩的,我们在抓牌的时候,每当从下面抓起一张牌,我们就会将这张牌放到合适的位置,使手上的牌始终是一个有序的状态(有些人打牌也习惯乱放,前提是自己看得懂)。那么插入排序的过程,和以上的过程就很相似。插入排序,首先将数列分成两部分,将数列的第一个数划分为left部分,剩下的数为right部分,我们依次将right部分的数一个一个取出,然后将该数放入left部分合适的位置,这样,left部分数越来越多,right部分的数越来越少,最后right部分为空,这原创 2020-11-21 21:16:26 · 256 阅读 · 0 评论 -
暴力破解算法思想(2)
暴力破解算法思想(2)题目:古罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在示 大数的时候,现在看起来简直不能忍受,所以在现代很少使用了。之所以这样,不 是因为发明表示法的人的智力的问题,而是因为一个宗教的原因,当时的宗教禁止 在数字中出现 0 的概念!罗马数字的表示主要依赖以下几个基本符号: I --> 1V --> 5X --> 10...原创 2019-02-19 15:35:30 · 15087 阅读 · 0 评论 -
暴力破解算法思想(1)
暴力破解算法思想(1)题目:美国数学家维纳(N.Wiener)智力早熟,11 岁就上了大学。他曾在 1935~1936 年应邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是 有人询问他的年龄,他回答说:“我年龄的立方是个 4 位数。我年龄的 4 次方是个 6 位数。这 10 个...原创 2019-02-17 22:17:50 · 948 阅读 · 0 评论 -
ACM和蓝桥杯比赛7种常用的多组输入输出(c语言)
编者按:以下7道题为ACM和蓝桥杯比赛中常用的多组输入输出的情况,题目很简单,这里相当于做一个总结,若读者有其他情况或者办法,可留言一起交流。第1道:#include<stdio.h>int main(){ int a,b; while(scanf("%d%d",&a,&b)==2) { printf(...原创 2020-04-09 22:48:37 · 2243 阅读 · 1 评论 -
20道经典C语言编程题(初级)
编者按:以下20道题目为自己练习所写的代码,均已提交检测通过,其中有些题也许有更优的解法,所以写的不好望读者包涵,由于个人练习,所以没有写注释,有什么问题的地方,可以留言一起交流学习。---------------------------------------------------------------------------------------------------...原创 2020-04-08 23:17:23 · 7711 阅读 · 5 评论 -
第三篇:线性表的链式表示(单链表)
//考研复习(3):线性表的链式表示(单链表)----------------------------------------------------------------------------//结点类型的描述typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList;...原创 2019-08-27 01:30:18 · 172 阅读 · 0 评论 -
第二篇:线性表的顺序表示典型题
//考研复习(2):线性表的顺序表示典型题----------------------------------------------------------------------------------------------------------------//---1.从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删除元素的值,//空出的位置由最后一个元素填补,若顺序表为...原创 2019-08-15 00:52:16 · 347 阅读 · 0 评论 -
第一篇:线性表的顺序表示实现(定义,插入,删除、查找)
//考研复习(1):线性表的顺序表示//顺序存储类型(静态描述)#define MaxSize 50 //定义顺序表最大长度typedef struct{ ElemType data[MaxSize]; //定义顺序表元素 int length; //定义顺序表当前长度}SqList; ...原创 2019-07-22 18:45:08 · 461 阅读 · 0 评论