
算法导论
文章平均质量分 55
cloudblaze
这个作者很懒,什么都没留下…
展开
-
[算法导论][思考题]2
2-1(在归并排序中队小数组采用插入排序) 虽然归并排序的最坏情况运行时间为Θ(n2)\Theta(n^2)Θ(n2),但是插入排序中的常量因子可能使得它在nnn较小时,在许多机器上实际运行得更快。因此,在归并排序中当子问题变得足够小时,采用插入排序使得递归的叶变粗是有意义的。考虑对归并排序的一种修改,其中使用插入排序来排序长度为kkk的n/kn/kn/k个子表,然后使用标准的合并机制来合并这些子表,这里kkk是一个特定的值。证明:插入排序最坏情况可以在Θ(nk)\Theta(nk)Θ(nk)时间内排原创 2021-05-18 10:31:01 · 278 阅读 · 0 评论 -
[算法导论][算法实现与分析]冒泡排序
伪代码BUBBLESORT(A) for i = 1 to A.length - 1 for j = A.length to i + 1 if A[j] < A[j - 1] exchange A[j] with A[j - 1]c#代码static void BubbleSort(int[] array){ for(int i = 0; i < array.Length - 1; i++) { for(int j = array.Length - 1; j原创 2021-05-18 08:11:43 · 141 阅读 · 0 评论 -
[算法导论][练习题]2.3
2.3-1使用图2-4作为模型,说明归并排序再数组A=<3,41,52,26,38,57,9,49>A=<3, 41, 52, 26, 38, 57, 9, 49>A=<3,41,52,26,38,57,9,49>上的操作答:[39263841495257][ 3 \quad 9 \quad 26 \quad 38 \quad 41 \quad 49 \quad 52 \quad 57 ][39263841495257]↑\uparrow↑[3264152∣9原创 2021-04-28 06:12:23 · 264 阅读 · 0 评论 -
[算法导论][算法实现与分析]归并排序
伪代码MERGE(A, p, q, r) n1 = q - p + 1 n2 = r - q let L[1 .. n1] and R[1 .. n2] be new arrays for i = 1 to n1 L[i] = A[p + i - 1] for j = 1 to n2 R[j] = A[q + j] i = 1 j = 1 for k = p to r if L[i] <= R[j] A[k] = L[i] i = i + 1 else原创 2021-04-23 19:52:31 · 117 阅读 · 0 评论 -
[算法导论][练习题]2.2
2.2-1用Θ\ThetaΘ记号表示函数n3/1000−100n2−100n+3n^3 / 1000 - 100n^2 - 100n + 3n3/1000−100n2−100n+3。答:Θ(n3)\Theta(n^3)Θ(n3)2.2-2考虑排序存储在数组AAA中的nnn个数:首先找出AAA中的最小元素并将其与A[1]A[1]A[1]中的元素进行交换。接着,找出AAA中次最小元素并将其与A[2]A[2]A[2]中的元素进行交换。对AAA中前n−1n-1n−1个元素按该方式继续。该算法称为选择算法原创 2021-04-11 02:16:09 · 262 阅读 · 0 评论 -
[算法导论][算法实现与分析]选择排序
伪代码SELECTION-SORT(A) for i = 1 to A.length - 1 minIndex = i for j = i + 1 to A.length if A[minIndex] > A[j] minIndex = j swap(A[i], A[minIndex])c#代码static void SelectionSort(int[] A){ for(int i = 0; i < A.Length - 1; i++) { int原创 2021-04-10 16:49:56 · 93 阅读 · 0 评论 -
[算法导论][练习题]2.1
2.1-1以图2-2为模型,说明INSERTION-SORT在数组A=<31,41,59,26,41,58>A=<31,41,59,26,41,58>A=<31,41,59,26,41,58>上的执行过程。答:图a显示了数组AAA的初始化状态,也就是数组AAA在排序前的顺序。在图b中,我们认定由第1个元素31为已排序的元素,此时我们指定第2个元素41为当前待插入的元素。因为41>31,所以41继续保存在数组第2个元素的位置。此时,数组AAA中原创 2021-04-10 03:02:54 · 391 阅读 · 0 评论 -
[算法导论][算法实现与分析]插入排序
伪代码INSERTION-SORT(A)for j == 2 to A.length key = A[j] // Insert A[j] into the sorted sequence A[1 .. j - 1]. i = j - 1 while i > 0 and A[i] > key A[i + 1] = A[i] i = i - 1 A[i + 1] = keyC#实现static void InsertionSort(int[] array){ for(原创 2021-04-09 03:55:31 · 284 阅读 · 0 评论 -
[算法导论][思考题]1
1-1 算法运行时间的比较对于下表中的每一个函数f(n)f(n)f(n)和时间ttt,求出可以在时间ttt内被求解出来的问题的最大规模nnn。假设解决该问题的算法解决该问题需要f(n)f(n)f(n)微秒。1秒1分钟1小时1天1个月1年1个世纪log2n\log_2nlog2n21062^{10^6}210626×1072^{6\times{10^7}}26×10723.6×1092^{3.6\times{10^9}}23.6×10928.64×10102^{原创 2021-04-07 23:41:41 · 445 阅读 · 1 评论 -
[算法导论][练习题]1.2
1.2-1 给出一个实际应用的例子,它在应用这一层次上要求有算法性的内容。讨论其中所涉及的功能。在现在的网约车服务中,为了节省油费以及时间,服务平台需要自动为司机选择一条最短路径作为导航。同时,也为了节省乘客的时间,通常会通过一定的算法来避免堵车。1.2-2 假设我们要比较在同一台计算机上插入排序和合并排序的实现。对于规模为n的输入,插入排序要运行8n28n^28n2步,而合并排序要运行64nlog2n64n\log_2n64nlog2n步。当n取怎样的值时,插入排序的性能要优于合并排序?8n2&原创 2021-04-06 08:52:29 · 155 阅读 · 0 评论 -
[算法导论][练习题]1.1
1.1-1 给出一个真实世界的例子,其中包含着下列的某种计算问题:排序,确定多矩阵相乘的最佳顺序,或者找出凸壳1、排序:在电子商城找到价格最便宜且最受买家好评的商品。2、凸壳:计算点集的直径。1.1-2 除了运行速度以外,在真实世界问题背景中,还可以使用哪些效率指标?内存效率和编码效率。1.1-3 选择你原来见过的某种数据结构,讨论一下其长处和局限性。顺序表:长处:可以对元素实现随机访问;局限性:在插入或删除元素时需要遍历一定量的元素,极端情况下,甚至需要遍历所有的元素。1.1-4 上文中原创 2021-04-06 03:12:07 · 206 阅读 · 0 评论