时间:2021-05-20
本文实例为大家分享了C语言实现归并排序的具体代码,供大家参考,具体内容如下
归并排序的基本思想:
将两个及其以上的有序表合并为一张有序表,把待排序序列通过分治法分为若干个有序子序列,然后每两个子序列合并为一个子序列,经过多次合并后整合为一张有序表。
排序过程如图:
代码如下:
#include "stdio.h"#define MAX 100int is1[MAX],is2[MAX];//原数组is1,临时空间数组is2void merge(int low,int mid,int high){ int i=low,j=mid+1,k=low; while(i<=mid&&j<=high) if(is1[i]<is1[j]) is2[k++]=is1[i++]; else is2[k++]=is1[j++]; while(i<=mid) is2[k++]=is1[i++]; while (j<=high) is2[k++]=is1[j++]; for ( i = low; i <=high ; i++) { is1[i]=is2[i]; printf("%5d",is1[i]); } printf("\n");} void mergeSort(int a, int b){ if(a<b){ int mid=(a+b)/2; mergeSort(a,mid); mergeSort(mid+1,b); merge(a,mid,b); }} void main(){ int i,n; printf("请输入元素个数:"); scanf("%d",&n); printf("请依次输入每个元素:\n"); for ( i = 1; i <=n ; ++i) { scanf("%d",&is1[i]); } mergeSort(1,n); printf("排序后的序列为:\n"); for ( i = 1; i <=n ; ++i) { printf("%4d",is1[i]); }}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C语言实现归并排序算法归并排序(Mergesort)是创建在归并操作上的一种有效的排序算法。该算法是采用分治法(DivideandConquer)的一个非常典型
C语言数据结构链表与归并排序实例详解归并排序适合于对链表进行原址排序,即只改变指针的连接方式,不交换链表结点的内容。归并排序的基本思想是分治法:先把一个链表分割
本文实例讲述了C++实现自顶向下的归并排序算法。分享给大家供大家参考,具体如下:一.算法描述自顶向下的归并排序:采用分治法进行自顶向下的程序设计方式,分治法的核
总结了一下常见集中排序的算法归并排序归并排序也称合并排序,是分治法的典型应用。分治思想是将每个问题分解成个个小问题,将每个小问题解决,然后合并。具体的归并排序就
本文实例讲述了Python实现的归并排序算法。分享给大家供大家参考,具体如下:归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Dividea