各种排序算法所需辅助空间 1、 所有的简单排序方法(包括:直接插入、起泡和简单选择)和堆排序的空间复杂度为O(1); 2、 快速排序为O(logn ),为栈所需的辅助空间; 3、 归并排序所需辅助空间最多,其空间复杂度为O(n ); 4、链式基数排序需附设队列首尾指针,则空间复杂度为O(rd )。 ...
分类:
编程语言 时间:
2019-11-16 21:32:40
阅读次数:
74
第四章实践报告 1.实践题目 4-3 最优合并问题 (100 分) 题目来源:王晓东《算法设计与分析》 给定k 个排好序的序列, 用 2 路合并算法将这k 个序列合并成一个序列。 假设所采用的 2 路合并算法合并 2 个长度分别为m和n的序列需要m+n-1 次比较。试设 计一个算法确定合并这个序列的 ...
分类:
其他好文 时间:
2019-11-16 17:48:30
阅读次数:
70
20182311 2019 2020 1 《数据结构与面向对象程序设计》实验七报告 课程:《程序设计与数据结构》 班级: 1823 姓名: 冷冲 学号:20182311 实验教师:王志强 实验日期:2019年10月30日 必修/选修: 必修 1.实验内容 定义一个Searching和Sorting类 ...
分类:
其他好文 时间:
2019-11-16 10:53:26
阅读次数:
48
介绍 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。 若将两个有序表合并成一个有序表,称为二路归并。归并排序 ...
分类:
编程语言 时间:
2019-11-15 18:16:16
阅读次数:
102
分治算法:是将问题划分为一些独立的子问题,递归的求解个子问题,然后合并子问题的解而得到原问题的解。 分治算法步骤 step1 分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题; step2 解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题 step3 合并:将 ...
分类:
编程语言 时间:
2019-11-15 12:21:00
阅读次数:
61
小和问题在一个数组中, 每一个数左边比当前数小的数累加起来, 叫做这个数组的小和。 求一个数组的小和。例子:[1,3,4,2,5]1左边比1小的数, 没有;3左边比3小的数, 1;4左边比4小的数, 1、 3;2左边比2小的数, 1;5左边比5小的数, 1、 3、 4、 2;所以小和为1+1+3+1 ...
分类:
编程语言 时间:
2019-11-13 16:10:01
阅读次数:
81
题意 https://vjudge.net/problem/CodeForces-1251C 一个字符串,相邻的偶数奇数不能交换位置,其他相邻的情况可以交换,问字符串代表的数最小是多少。 思路 相邻的偶数、奇数位置固定,所以可以把奇数放到一起,偶数放到一起,对这两堆归并排序即可。 代码 #inclu ...
分类:
编程语言 时间:
2019-11-13 00:26:13
阅读次数:
138
1.将以下文法消除左递归,并分析符号串 i*i+i (1)E -> E+T | T E -> TE' E' -> +TE'|ε (2)T -> T*F | F T -> FT' T' -> *F|ε (3)F -> (E) | i 2.P101练习7(2)(3)文法改写,并分别求FIRST集、FOL ...
分类:
其他好文 时间:
2019-11-12 13:10:14
阅读次数:
77
归并排序 2019-11-10 11:41:59 by冲冲 1、概念 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得 ...
分类:
编程语言 时间:
2019-11-10 17:44:58
阅读次数:
80
"题目链接" 【题解】 会归并排序吧? 就把这K个链表当成是K个数字就好。 然后做归并排序。 因为归并排序的时候本来就会有这么一个过程。 [l..mid]和[mid+1..r]这两段区间都是有序的了已经。 然后再把他们俩合并起来。 合并起来之后把这个链表直接放在这个区间的最左边那个位置就好 上一级的 ...
分类:
编程语言 时间:
2019-11-09 17:40:57
阅读次数:
83