web-算法
0.7.09 已知一组关键字为{59,8,25,33,99,33,19}的序列,选择一种稳定的排序算法,将该序列从小到大排序,完成下列要求。
(1)写出你所选择的排序算法的名称;
(2)写出该排序算法的平均时间复杂度;
(3)写出第一趟排序结束时的关键字状态。
9.7.08 已知一组关键字为{20,10,80,50,15,40}的序列,选择一种稳定的排序算法,将该序列从小到大排序,完成下列要求。
(1)写出你所选择的排序算法的名称;
(2)写出该排序算法的平均时间复杂度;
(3)写出第一趟排序结束时的关键字状态。
(1) 冒泡排序(直接插入排序,基数排序,2 路归并排序)
(2) O(n*2)
(3) 10 20 50 15 40 80
8.8.08 将一组关键字{26,38,6,18,72,57,12}从小到大进行排序,分别手工执行以下排序算法,写出第一趟结束时的关键字状态,并说明该算法的稳定性。
(1) 冒泡排序;
(2) 快速排序(以第一个数为枢轴)。
//Answer
(1)冒泡排序稳定,第一趟序列:6,26,38,12,18,72,57
(2)快速排序不稳定,第一趟序列:12,18,6,26,72,57,28
7.8.08 已知一组关键字为{19,13,5,27,1,26,31,16}的序列,选择一种时间复杂度为O(nlogn),且稳定的排序算法,完成序列小到大排序,给出下列操作的结果。
(1)写出排序算法的名称;
(2)写出前3趟排序结束时的关键字状态。
(1) 2路归并排序
(2)
13 19 5 27 1 26 16 31
5 13 19 27 1 16 26 31
1 5 13 16 19 26 27 31
6.8.08 已知关键字序列为{30,6,37,28,72,28,51},选择一种时间复杂度为O(nlogn)的排序算法,将该序列从小到大排序,完成下列操作。
(1)写出排序算法的名称;
(2)给出该排序算法的稳定性;
(3)写出该排序算法的空间复杂度;
(4)写出第一趟排序结束时的关键字状态。
(1)2路归并排序(快速排序也行)
(2)稳定(快排不稳定)
(3)O(n) (快排 O(nlogn))
(4)6 30 28 37 28 72 51 (快排:28 6 28 30 72 37 51)
5.5.08 已知一组关键字为{46,12,25,33,68,33,19}的序列,选择一种稳定的排序算法,将该序列从小到大排序,完成下列要求。
(1)写出你所选择的排序算法的名称;
(2)写出该排序算法的平均时间复杂度;
(3)写出第一趟排序结束时的关键字状态。
(1)冒泡排序(直接插入排序,2 路归并排序,基数排序)
(2)稳定(快排不稳定)
(3)O(n^2) ( O(nlogn) , O(d(n+r)) )
(4)
冒泡:12 25 33 46 33 19 68
2路归并:12 46 25 33 33 68 19
基数排序:12 33 33 25 46 68 19
4.6.06 已知一组关键字为{15,20,10,80,50,10,40}的序列,选择一种时间复杂度为O(nlogn)的排序算法,将该序列从小到大排序,完成下列要求。
(1)写出你所选择的排序算法的名称;
(2)给出该排序算法的稳定性;
(3)写出第一趟排序结束时的关键字状态。
(1) 2路归并排序(快速排序)
(2) 稳定(快排不稳定)
(3) 15 20 10 80 10 50 40
快排:10 10 15 80 50 20 40
3.6.06 已知一组关键字为{26,38,6,18,72,38,57}的序列,选择一种时间复杂度为O(nlogn)的排序算法,将该序列从小到大排序,完成下列要求。
(1)写出你所选择的排序算法的名称;
(2)给出该排序算法的稳定性;
(3)写出第一趟排序结束时的关键字状态。
(1) 2路归并排序(快速排序)
(2) 稳定(快排不稳定)
(3) 26 38 6 18 38 72 57
快排:18 6 26 38 72 38 57