第二章是递归和分治策略,通过Hanoi塔问题、排列问题等学习递归的思想,通过二分搜索算法、大整数乘法等学习了分治法的思想,并学习了归并排序和快速排序两种排序方法。PTA上的问题一是找第k小的数,用到了快速排序的方法对数组进行排序,同时在寻找第k小的数时递归调用int find(int a[],int ...
分类:
编程语言 时间:
2018-10-06 21:38:48
阅读次数:
169
排序算法 排序算法两阶段 第一阶段(比较排序) 插入排序 合并排序 堆排序 快速排序 第二阶段(非比较排序) 计数排序 基数排序 桶排序 第一阶段:比较排序 插入排序 插入排序的主要思想 : 将当前的元素放入前面合适的位置 插入排序的实现细节 : heap_sort小结: heap_sort中最重要 ...
分类:
编程语言 时间:
2018-10-06 20:40:56
阅读次数:
188
1、快速排序,上代码: 分析一哈: 当不考虑最差情况(O(n^2))时,快排时间复杂度为O(nlogn):因为层数为O(logn)即调用栈的高度是O(logn),而每层的时间是O(n)2、合并排序 采用分而治之的方法,先把数组分成一个个长度为1的数组,再将数组分别按顺序组合成一个数组 因此涉及到两个 ...
分类:
编程语言 时间:
2018-10-06 00:05:19
阅读次数:
190
有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中。 #include <stdio.h>#include <stdlib.h>#include <string.h> #include <iostream>using namespace std ...
分类:
编程语言 时间:
2018-09-24 00:25:53
阅读次数:
271
1.描述:找出数组A的和最大的非空连续子数组,我们称这样的连续子数组为最大子数组。 2. 用分治策略来求解。 a. 假设我们要求A的子数组A[low, high]的最大子数组。根据分治策略,我们先将A[low,high] 平分 b. 那么 A[low,highj]的子数组A[i,j]只有三种可能 a ...
分类:
编程语言 时间:
2018-09-02 20:20:33
阅读次数:
186
只有当数组中包含负数时,最大子数组问题才有意义。如果所有元素都是非负的,最大子数组问题没有任何意义,因为整个数组和肯定是最大的 ...
分类:
编程语言 时间:
2018-08-12 17:33:42
阅读次数:
128
归并排序也是一种常用的排序算法, 其时间复杂度为O(n*logn), 它的基础是分治的思想。 其基本思路就是把数组分成两组A,B, 如果这两组内的数据都是有序的, 那么就可以很方便的对这两组数据进行合并排序。 但是如何让这两组数据有序呢? 归并法的思想就是把A,B两组各自再分成两组, 依次类推, 当... ...
分类:
编程语言 时间:
2018-08-10 15:54:04
阅读次数:
132
字符设备(Character device) 是一个顺序的数据流设备,对这种设备的读写是按字符进行的,而且这些字符是连续地形成一个数据流。他不具备缓冲区,所以对这种设备的读写是实时的。 块设备(blockdevice) 是一种具有一定结构的随机存取设备,对这种设备的读写是按块进行的,他使用缓冲区来存 ...
分类:
其他好文 时间:
2018-08-08 13:56:00
阅读次数:
183
二分查找 概念: 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求 线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 算法复杂度: 二分查找法也称为折半查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况 下用O(log n) ...
分类:
其他好文 时间:
2018-08-03 23:13:55
阅读次数:
297