数据结构实验报告
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   
相关推荐: