摘要:
归并排序:参考这个作者的博客,写得非常好 https://www.cnblogs.com/skywang12345/p/3602369.htmlhttps://www.cnblogs.com/chengxiao/p/6194356.html算法思想:1.递归的对需要排序的列表进行“分”的操作,先把列 阅读全文
摘要:
插入排序:对一个无序的列表进行排序,通过插入排序算法思想基本思想:要对输入的无序列表进行排序,列表从左至右增大,假设第一个元素是已经排好了的元素,那么第二个元素就与第一个元素比较,如果大,则不需要移动,如果小了,则需要先把第一个元素往后移一位,然后再把第二个元素给第一个元素赋值。举个例子来说明:初始 阅读全文
摘要:
堆排序:堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。该数组从逻辑上讲就是一个堆结构,我们用简单的公式来描述一下堆的定义就是:大顶堆:arr[i] >= arr[2i+1] && arr[i] >= 阅读全文
摘要:
代码中写了三种快速排序的方法: 假设列表中第一个元素为中间值,那么就从左、右两个方向朝中间遍历与中间值比较,比其小的放左边,比其小的放右边。当左、右指针变量相等时,完成第一次排序,保在左边的都比中间值小,在右边的都比中间值大。 然后递归调用该方法,从而实现最终的整个列表排序。 中间值(该值每次假设是 阅读全文
摘要:
工作原理:1步:左边第一个依次与后续的比较,如果比0位置的值小,则交换值,这样第一次循环结束 后,左边第一个值则是整个列表中的最小值2步:然后再找位置1的最小值,依次遍历,完成整个列表的排序 def selectSort(data): n = len(data) for i in range(n): 阅读全文
摘要:
python冒泡排序实现原理:每次从左边开始,相邻的两两进行比较,大的放右边,小的放左边,完成第一次后,整个 列表中最大的数就在最右边了。 然后再开始第二次遍历,依照上述规则进行,最终排列完成整个列表实现代码如下: """ 冒泡排序 """ def bubblingSort(data): n = l 阅读全文
摘要:
给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。现在的问题是,是否存在一种方式使得得到的表达式的结果等于24。 这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定义一致(这里的除法定义是实数除法)。比如,对于5,5,5,1,我们知道5 * (5 阅读全文
摘要:
#列表的访问方式如下几种,可根据不同的情况使用。 list = ['0', '1', '2', '3'] # 方法1 print '遍历列表方法1:' for i in list: print ("序号:%s 值:%s" % (list.index(i), i)) print '\n遍历列表方法2: 阅读全文
摘要:
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?5,1,1和1,5,1 是同一种分法。 5个苹果放入1个盘子,1种方法与1个苹果放入5个盘子,也是1种方法,其中他们的方法是相同的,告诉我们,不区分苹果和盘子的序号。 输入第一行是测试数据的数目t(0 <= t <= 阅读全文
摘要:
用递归将问题分解为规模更小的子问题进行求解 例题: 爬楼梯树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级,也可以第一次走两级,第二次走一级,一共3种方法。输入输入包含若干行,每行包含一个正整数N,代表楼梯 阅读全文