
数据结构与算法
数据结构与算法
吃着火锅x唱着歌
这个作者很懒,什么都没留下…
展开
-
用奇数的平方个数字填在矩阵中,使横,竖,斜相加的数字和都相等
规则:用数字1----n(n为奇数)的平方填充到一个n行n列的矩形数阵中,每个数出现一次,使这个矩阵的每行、每列、斜对角线的和都为一个值。填法:1.第一个要填的数字为1,接下来要填的数字为2,再接下来为3,以此类推,1填在第一行的中间位置。2.每下一个数填在上一个数的“右上角”,将矩阵假想为右边界和左边界相邻,上边界与下边界相邻。3.每当要填的数是n的整倍数的下一个数时,将这个数填在上一个...原创 2019-02-25 00:57:36 · 686 阅读 · 0 评论 -
单向链表(Python)
使用Python实现带头单向链表:以下为结点的定义:class Node(): def __init__(self,value,next = None): self.value = value self.next = nextlenth = 0 #链表的长度,规定只有一个头结点时...原创 2018-10-12 15:46:20 · 242 阅读 · 0 评论 -
插入排序
插入排序过程为首先选出数组前一个,使其有序。第二步选中前两个,因为前一个已经有序,所以只需将第二个与第一个比较,如2<1则交换位置。第三步选中前三个,因为前两个已经有序,所以只需将第三个与第二个比较,如3<2则交换位置,之后比较第一个和第二个,如2<1则交换位置,如2>1则说明之前已经有序。重复之前步骤直到排序完成。Python代码如下:def InsertSor...原创 2018-10-10 17:26:52 · 121 阅读 · 0 评论 -
堆排序
堆排序分为两步,建堆和调整堆,这两步可以由一个函数完成,但这个函数每次只能调整一条线(每层选择一次左右)使其符合堆的定义,因此建堆需要从最后一个非叶子节点自底向上调整堆,每次调整堆时需要对比两个孩子与父节点的大小,将最大的孩子与父节点交换(大顶堆)。Python代码如下:def HeapAdjust(lst,parent,end): child = 2 * parent + 1 ...原创 2018-10-08 21:40:59 · 155 阅读 · 0 评论 -
冒泡排序
冒泡排序过程为依次比较相邻的两个数大小,将较大的数放到右边,一趟结束后,最大的数字一定在最右边。第二趟重复第一趟的过程,但最后一个数一定是最大的,所以最后一个数不用比较。第三趟重复之前过程,后两个数是有序的,所以不用比较。Python代码如下:def BubbleSort(lst): for i in range(len(lst)): flag = 0 ...原创 2018-10-07 20:42:56 · 207 阅读 · 0 评论 -
快速排序
快速排序过程为选出待排序数列中的第一个数n,把比n小的数放到n的左边,比n大的数放到n的右边,再对左右原创 2018-10-07 15:53:50 · 196 阅读 · 0 评论