C语言分治法实现归并排序

 更新时间:2018年08月16日 10:39:25   作者:LCYong_  
这篇文章主要为大家详细介绍了C语言实现归并排序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C语言实现归并排序的具体代码,供大家参考,具体内容如下

归并排序的基本思想:

将两个及其以上的有序表合并为一张有序表,把待排序序列通过分治法分为若干个有序子序列,然后每两个子序列合并为一个子序列,经过多次合并后整合为一张有序表。

排序过程如图:

代码如下:

#include "stdio.h"
#define MAX 100
int is1[MAX],is2[MAX];//原数组is1,临时空间数组is2
void 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]);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C语言学习之柔性数组详解

    C语言学习之柔性数组详解

    结构体的最后一个元素允许是未知大小的数组,这就叫柔性数组。这篇文中主要为大家详细介绍了C语言中柔性数组的相关知识,需要的可以了解一下
    2023-03-03
  • 探究c++虚表实现代码

    探究c++虚表实现代码

    虚表是一种利用程序语言实现的dynamic dispatch机制,或者说runtime method binding机制,也就是我们说的多态。本文简单探究虚表实现方法,一起看看吧
    2021-09-09
  • C++ Virtual关键字的具体使用

    C++ Virtual关键字的具体使用

    这篇文章主要介绍了C++ Virtual关键字的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 深入探究协程在C++中的实现方式

    深入探究协程在C++中的实现方式

    协程可以被看作是计算机程序中的独立功能块,它们在执行过程中能够暂停和恢复,与传统的函数调用相比,协程更像是一种轻量级的线程,本文我们将深入探究协程在C++中的实现方式,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2023-12-12
  • C++ 中使用lambda代替 unique_ptr 的Deleter的方法

    C++ 中使用lambda代替 unique_ptr 的Deleter的方法

    这篇文章主要介绍了C++ 中使用lambda代替 unique_ptr 的Deleter的方法,需要的朋友可以参考下
    2017-04-04
  • C语言中进行大小写字母转化的示例代码

    C语言中进行大小写字母转化的示例代码

    C语言标准库中提供了用于大小写转换的函数,使得这一操作变得简单而高效,本文将详细介绍如何在C语言中进行大小写字母的转换,包括相关的函数和示例代码,需要的朋友可以参考下
    2024-03-03
  • C语言main函数的三种形式实例详解

    C语言main函数的三种形式实例详解

    这篇文章主要介绍了 C语言main函数的三种形式实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • C++实现LeetCode(148.链表排序)

    C++实现LeetCode(148.链表排序)

    这篇文章主要介绍了C++实现LeetCode(148.链表排序),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • 实战开发为单片机的按键加一个锁防止多次触发的细节

    实战开发为单片机的按键加一个锁防止多次触发的细节

    今天小编就为大家分享一篇关于实战开发为单片机的按键加一个锁防止多次触发的细节,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • C++ throw关键字实现抛出异常和异常规范

    C++ throw关键字实现抛出异常和异常规范

    本文主要介绍了C++ throw关键字实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08

最新评论