数据结构实验报告
length
Merge(R,i,i+length-1,n); //归并最后两个子序列 //注意:若i≤n且i+length-1≥n时,则剩余一个子序列轮空,无须归并 }
//========== 自底向上对R[1..n]做二路归并排序=============== void MergeSort(SeqList R) {
int length;
for(length=1;length //==========输入顺序表======== void input_int(SeqList R) { int i; printf(\ scanf(\ printf(\ for(i=1;i<=n;i++) scanf(\} 37 数据结构实验报告 //==========输出顺序表======== void output_int(SeqList R) { int i; for(i=1;i<=n;i++) printf(\} //==========主函数====== void main() { int i; SeqList R; input_int(R); printf(\ printf(\ printf(\ printf(\ printf(\ printf(\ printf(\ printf(\ printf(\ 38 数据结构实验报告 scanf(\输入整数1-7,选择排序方式 switch (i){ case 1: InsertSort(R); break; //值为1,直接插入排序 case 2: BubbleSort(R); break; //值为2,冒泡法排序 case 3: QuickSort(R,1,n); break; // case 4: SelectSort(R); break; //排序 case 5: HeapSort(R); break; // case 6: MergeSort(R); break; // case 7: exit(0); // } printf(\ output_int(R); } 39 值为3,快速排序 值为4,直接选择值为5,堆排序 值为6,归并排序 值为7,结束程序 数据结构实验报告 运行结果: 直接插入排序: 冒泡法排序: 快速排序: 直接选择排序: 40 数据结构实验报告 堆排序: 归并排序: 实验心得: 关于排序的数据结构实验。感觉各种排序方法都有各自的特点。直接插入排序是根据前面一个数的位置和后面一个相比较直接排 而冒泡法则要经过n*(n-1)次每次确定一个数的位置 但是这种方法有点复杂 要循环n次,而快速排序则是从中间到两边 任选一个数出来把小的排前面 大的排后面 然后重复以上过程 这样可以有效地节约时间 每一步都为下一步节约了时间。而直接选择排序有两个序列 也是每一步都为下一步节约了世界 堆排序巧妙地利用了树中双亲与孩子的关系 归并排序则是发散的 通过递归成2的n次方排,通过这几种排序方法 我更加了解了排序 也知道了许多数据结构。 41
相关推荐: