数据结构排序算法之归并排序(c语言实现)

博主身为大二萌新,第一次学习数据结构,自学到排序的时候,对于书上各种各样的排序算法顿觉眼花缭乱,便花了很长的时间尽力把每一个算法都看懂,但限于水平有限,可能还是理解较浅,于是便将它们逐个地整理实现出来,以便加深理解。

归并排序就是通过将一个具有n个key记录的线性表,看成是具有n个有序子序列的排序叠加来实现对原有序列的排序的一种算法。它的中间状态就是将所有的子序列长度变为1,再将它们两两进行归并,得到长度为2或1的次级子序列,之后再进行两两归并,如此反复,直到得到一个长度为n的有序序列。这个过程包含了很多次的切分与归并,可以通过递归的方式来实现。归并排序的改进形式没有使用耗时较大的递归,而是改用了迭代法,这里我们先来讨论比较基础的递归法。

一共分成两个函数,一个是切分归并函数,另一个则是实现归并的函数。

话不多说,先粘贴我根据算法实现出来的源代码。

运行环境:win10&vs2015&.cpp或.c后缀文件形式

#include "stdafx.h"
#include "stdio.h"
#include "malloc.h"
#include <string.h>
#include<cstdlib>

#define OK 1
#define ERROR 0
#define MAXSIZE 100

typedef int Status;

typedef struct {//一个简单的线性链表结构
	int *Data;//线性链表的初址
	int length;
}SqList;

/*线性链表初始化函数*/
Status InitSqList(SqList *S) {
	int n;
	prin
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值