摘要: 1.归并排序时间复杂度为O(N*logN),额外的空间复杂度O(N)。 2.递归行为:一个数组的排序,先将左侧部分排好序,然后将右侧部分排好序,最后整体利用外排序的方式整体排好。 3.归并排序:将两个(或者两个以上)有序表合并成一个新的有序表,即把待排序的序列分成若干个子序列,在把有序的子序列合并为 阅读全文
posted @ 2019-03-03 21:48 stone1234567890 阅读(5784) 评论(0) 推荐(0) 编辑
摘要: 1.递归算法的时间复杂度: master公式的使用:T(N)=a*T(N/b)+O(N^d) master公式的适用范围:划分的子过程规模是一样的情况下,只是发生了a次,这种情况下才能运用master来求解。 (1)log(b,a)>d >复杂度为O(N^log(b,a)) (2)log(b,a)= 阅读全文
posted @ 2019-03-03 21:09 stone1234567890 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 1. 对数器概念和使用 (1)有一个你想要的测的方法a (2)实现一个绝对正确但是复杂度不好的方法b (3)实现对比的方法 (4)把方法a和方法b对比很多次来验证方法a是否是正确的 (5)如果有个样本使得对比出错,打印出样本分析是哪个方法出错的 (6)当样本数量很多的时候,对比测试依然正确,可以确定 阅读全文
posted @ 2019-03-03 19:32 stone1234567890 阅读(1164) 评论(0) 推荐(0) 编辑
摘要: 1、原理:从整个待排序列中选出一个元素插入到已经有序的子序列中去,得到一个有序的、元素加一的子序列,直到整个序列的待插入元素为0,则整个序列全部有序。 2、思路: (1)设置监视哨r[0],将待插入的记录值赋值给r[0]; (2)设置开始查找的位置j; (3)在数组中搜索,搜索 中将第j个记录后移, 阅读全文
posted @ 2019-03-03 15:03 stone1234567890 阅读(1543) 评论(0) 推荐(0) 编辑
摘要: 1.原理:每次从待排序的数据元素中选出最小(或者最大)的一个元素,存放在已排好序列的起始位置(或者末尾位置),直到全部待排序的数据元素排完。 2.思路: (1)第一趟排序,在待排序数据arr[1],arr[2]...arr[n]选出最小的数据,将其与arr[1]进行交换。 (2)第二趟排序:在待排序 阅读全文
posted @ 2019-03-03 11:32 stone1234567890 阅读(3302) 评论(0) 推荐(3) 编辑
摘要: 0.如果遇到相等的值不进行交换,那这种排序方式是稳定的排序方式。 1.原理:比较两个相邻的元素,将值大的元素交换到右边 2.思路:依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。 (1)第一次比较:首先比较第一和第二个数,将小数放在前面,将大数放在后面。 (2)比较第2和第3个数,将 阅读全文
posted @ 2019-03-03 10:39 stone1234567890 阅读(418156) 评论(7) 推荐(40) 编辑
摘要: 0.关于二分查找: 1.二分查找作为一种常见的查找算法,将原本的线性时间提升到了对数的范围,大大缩短了搜索的时间,但是有一个前提,那就是必须是在有序的数据中进行查找。 2.算法思想:二分查找又叫做折半查找。每次取出中间未知的值与待查的关键字进行比较,如果中间位置的关键字比待查关键字大,则在前半部分循 阅读全文
posted @ 2019-03-03 09:05 stone1234567890 阅读(1021) 评论(0) 推荐(1) 编辑