东北大学——考研初试——计算机842——排序编程题
2020-05-31 23:02
246 查看
调整大根堆(只考过一次)
- 大根堆实际上还是数组
- 双亲结点,左孩子结点,右孩子结点为一组
- 先寻找最后的一组
- 每一次先比较两个孩子谁大
- 然后较大的孩子与双亲比较
6. 双亲大,就跳到下一组,直到根
7. 孩子大,交换孩子,双亲。
8. 检查受改变的孩子的组有没有变
//根节点为1;递归的方式好写 void AdjustDown(int A[], int length, int i) { if(2 * i >= length) { return; } int maxChildIdx = 2 * i; if(2i+1 < length && A[2 * i] > A[2 * i+1]) { maxChildIdx = 2 * i+1; } if(A[i] >= A[maxChildIdx]) { return; } if(A[maxChildIdx] > A[i]) { A[0] = A[i]; A[i] = A[maxChildIdx]; A[maxChildIdx] = A[0]; } AdjustDown(A, length, maxChildIdx); } void AdjustHeap(int A[], int length) { for(int i = length / 2;i > 0; --i) { AdjustDown(A, length, i); } }
快排模板(没考过,但是很好写)
- 取第一个为标准
- 把小于标准的,放前面;大于标准的放后面
- 标准放回中间
- 分成两部分递归
void QSort(int a[], int i, int j, int low, int high) { if(low >= high) { return; } int temp = a[low]; while(low < high && temp <= a[high]) { --high; } if(low < high) { a[low] = a[high]; } while(low < high && temp > a[low]) { ++low; } if(low < high) { a[high] = a[low]; } a[low] = temp; QSort(a, i, j, i, low - 1); QSort(a, i, j, low + 1, j); }
相关文章推荐
- 东北大学——考研初试——计算机842——没考过的知识点
- 东北大学计算机考研复试时软件工程的一些总结(一)
- 计算机考研之数据结构-排序
- 后缀子串排序(后缀数组) - 上海交通大学计算机历年考研复试上机题
- 双非一本考研湖南大学计算机技术初试经验分享
- 吉林大学计算机966应用技术方向考研初试复试经验贴
- 2011 考研 计算机算法 中序数
- 2010年 浙工大考研计算机专业课试题C++
- 2012年 浙工大考研计算机专业课试题C++(专硕)
- 2011计算机专业课考研春季复习要素集锦
- 华科02年计算机考研复试机试
- 9度-王道论坛计算机考研数据结构算法实战测试(2)
- 考研计算机-机试题-之前博客的链接
- 2016南京师范大学英美文学考研初试真题回忆
- 2011年计算机考研大纲
- 华科大考研计算机系834大纲之计算机网络(三)
- 计算机考研的调查和改进建议
- 全国计算机等级二级C语言上机编程题题型
- 计算机考研--我的Road
- 计算机专业考研的看法