数据结构
xingkong1992
这个作者很懒,什么都没留下…
展开
-
第三章-list
特点逻辑次序不和物理位置完全对应 循位置访问 动态操作(insert,remove)效率高,静态操作(find,search)效率低 封装一个私有头结点,尾节点的双向链表 插入排序描述始终将整个序列分为两个部分:有序的前缀,无序的后缀,通过迭代,将无序后缀的首元素插入到有序的前缀中。 特点输入敏感 时间复杂度O(n^2) In-place sort 版本一void insertSort(int* v原创 2018-01-26 21:48:18 · 112 阅读 · 0 评论 -
第二章-vector
二分法查找 版本A #include #include using namespace std; int binaSearch(int e, vectorint> vec) { int lo = 0, hi = vec.size(); while (lo<hi) { int mid = (lo + hi) >> 1; cout <原创 2018-01-26 10:35:46 · 197 阅读 · 0 评论 -
排序算法之归并排序
第一个在最坏情况下时间复杂度为O(nlogn)的算法 用于分布式平台中处理海量数据 代码 void merge(vectorint> &vec, int lo, int mid, int hi) { int len1 = mid - lo,len2=hi-mid,i=0,j=0,k=0; int* A=new int[len1]; for (int i = 0;原创 2018-02-03 14:33:54 · 133 阅读 · 0 评论 -
数据结构之选择排序
将序列分为unsorted(前)部分和sorted(后)部分,每次从取出unsorted取出值放入sorted的最前方。时间复杂度O(n^2) 代码 void selectSort(vectorint>& vec, int n) { for (int i = 0; i < n; i++) { int mx = i; for (int j = i+1;原创 2018-02-03 14:47:44 · 167 阅读 · 0 评论 -
数据结构之插入排序
始终将序列切分为有序的两部分:有序的前缀,无序的后缀,通过迭代,反复的将后缀的首元素转移至前缀中。 最坏时间复杂度O(n^2) 代码 void insertSort(vectorint> &vec,int n) { for (int i = 1; i < n; i++) { int key = vec[i], j = i; for (; j >0;原创 2018-02-03 15:06:37 · 164 阅读 · 0 评论 -
第四章--栈
特点后进先出 单端操作 只能从栈顶插入删除 栈的定性应用逆序输出-进制转换 递归版本void convert(int n, stack <char> &s, int base) { if (n < 1) return; char digit[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'原创 2018-01-28 22:44:00 · 214 阅读 · 0 评论