实验五 排序
院 、系 |
海师计教系 |
班级 |
计本二班 |
学 号 |
200624101101 |
姓名 |
杨振平 |
完成日期 |
2007-12-19 |
源程序名 |
123.cpp |
一、题目
定义一个无序序列,使用插入排序、希尔排序、快速排序及堆排序等各种内部排序方法使之有序。
二、需求分析
本程序在Windows环境下用用Visual C++编写,完成程序内部排序算法的实现:
三、概要设计
主函数中调用
Bubble_Sort();//起泡排序
InsertSort();//直接插入排序
SelectSort();//简单选择排序
PrintfQuickSort();//快速排序
ShellSort();//希尔排序
HeapSort();//堆排序
6种排序算法函数
四、测试结果
要排序的随机数组是:
106 44 82 98 43 198 3 70 84 170
124 3 87 148 146 86 23 58 18 138
114 15 55 172 113 195 24 192 154 133
52 109 146 58 43 101 192 24 24 112
138 102 70 40 147 186 91 3 192 92
28 126 33 20 2 171 162 10 111 101
172 183 174 186 146 3 189 2 122 142
186 122 114 131 191 73 123 103 113 65
41 148 66 142 126 123 60 144 31 150
70 36 1 77 61 141 146 186 34 176
选择排序方法:1: 起泡排序
2: 直接插入排序
3: 简单选择排序
4: 快速排序
5: 希尔排序
6: 堆排序
7: 退出......
1
*******起泡排序*******
排序结果为:
1 2 2 3 3 3 3 10 15 18
20 23 24 24 24 28 31 33 34 36
40 41 43 43 44 52 55 58 58 60
61 65 66 70 70 70 73 77 82 84
86 87 91 92 98 101 101 102 103 106
109 111 112 113 113 114 114 122 122 123
123 124 126 126 131 133 138 138 141 142
142 144 146 146 146 146 147 148 148 150
154 162 170 171 172 172 174 176 183 186
186 186 186 189 191 192 192 192 195 198
比较次数为:4950
移动次数为:6927
选择排序方法:1: 起泡排序
2: 直接插入排序
3: 简单选择排序
4: 快速排序
5: 希尔排序
6: 堆排序
7: 退出......
2
*******直接插入排序*******
排序结果为:
1 2 2 3 3 3 3 10 15 18
20 23 24 24 24 28 31 33 34 36
40 41 43 43 44 52 55 58 58 60
61 65 66 70 70 70 73 77 82 84
86 87 91 92 98 101 101 102 103 106
109 111 112 113 113 114 114 122 122 123
123 124 126 126 131 133 138 138 141 142
142 144 146 146 146 146 147 148 148 150
154 162 170 171 172 172 174 176 183 186
186 186 186 189 191 192 192 192 195 198
比较次数为:2403
移动次数为:2505
选择排序方法:1: 起泡排序
2: 直接插入排序
3: 简单选择排序
4: 快速排序
5: 希尔排序
6: 堆排序
7: 退出......
3
*******简单选择排序*******
排序结果为:
1 2 2 3 3 3 3 10 15 18
20 23 24 24 24 28 31 33 34 36
40 41 43 43 44 52 55 58 58 60
61 65 66 70 70 70 73 77 82 84
86 87 91 92 98 101 101 102 103 106
109 111 112 113 113 114 114 122 122 123
123 124 126 126 131 133 138 138 141 142
142 144 146 146 146 146 147 148 148 150
154 162 170 171 172 172 174 176 183 186
186 186 186 189 191 192 192 192 195 198
比较次数为:4950
移动次数为:285
选择排序方法:1: 起泡排序
2: 直接插入排序
3: 简单选择排序
4: 快速排序
5: 希尔排序
6: 堆排序
7: 退出......
4
*******快速排序*******
排序结果为:
1 2 2 3 3 3 3 10 15 18
20 23 24 24 24 28 31 33 34 36
40 41 43 43 44 52 55 58 58 60
61 65 66 70 70 70 73 77 82 84
86 87 91 92 98 101 101 102 103 106
109 111 112 113 113 114 114 122 122 123
123 124 126 126 131 133 138 138 141 142
142 144 146 146 146 146 147 148 148 150
154 162 170 171 172 172 174 176 183 186
186 186 186 189 191 192 192 192 195 198
比较次数为:908
移动次数为:460
选择排序方法:1: 起泡排序
2: 直接插入排序
3: 简单选择排序
4: 快速排序
5: 希尔排序
6: 堆排序
7: 退出......
5
*******希尔排序*******
排序结果为:
1 2 2 3 3 3 3 10 15 18
20 23 24 24 24 28 31 33 34 36
40 41 43 43 44 52 55 58 58 60
61 65 66 70 70 70 73 77 82 84
86 87 91 92 98 101 101 102 103 106
109 111 112 113 113 114 114 122 122 123
123 124 126 126 131 133 138 138 141 142
142 144 146 146 146 146 147 148 148 150
154 162 170 171 172 172 174 176 183 186
186 186 186 189 191 192 192 192 195 198
比较次数为:1137
移动次数为:884
选择排序方法:1: 起泡排序
2: 直接插入排序
3: 简单选择排序
4: 快速排序
5: 希尔排序
6: 堆排序
7: 退出......
6
*******堆排序*******
排序结果为:
1 2 2 3 3 3 3 10 15 18
20 23 24 24 24 28 31 33 34 36
40 41 43 43 44 52 55 58 58 60
61 65 66 70 70 70 73 77 82 84
86 87 91 92 98 101 101 102 103 106
109 111 112 113 113 114 114 122 122 123
123 124 126 126 131 133 138 138 141 142
142 144 146 146 146 146 147 148 148 150
154 162 170 171 172 172 174 176 183 186
186 186 186 189 191 192 192 192 195 198
比较次数为:939
移动次数为:1170
选择排序方法:1: 起泡排序
2: 直接插入排序
3: 简单选择排序
4: 快速排序
5: 希尔排序
6: 堆排序
7: 退出......
7
Press any key to continue
五、调试分析
通过不断的加进函数调试
加深并实现算法的思想
从程序的结果可以清晰看出
对于不同的序列
各种算法的比较和移动次数