C递归实现归并排序 主函数调用
归并排序有递归实现和非递归实现,实际中使用非递归实现较多,因为其性能相对递归实现来说更好,这里给出的递归实现归并排序:
可视化排序算法:
https://visualgo.net/zh/sorting
先上代码,其中最难理解的就是归并merge函数,将两个有序表合并为一个有序表,加了注释,举了一个例子来推演,这样看代码才看的懂其中的变量是干嘛的:
//-*- coding=utf-8 -*-
#include <stdio.h>
#include <stdlib.h>
void msort(int a[], int low, int high);
void merge_sort(int a[], int length);
void merge(int a[], int low, int mid, int high);
void printArr(int a[],int length);
int main(int argc, char const *argv[])
{
int a[10] = {
4, 3, 1, 2, <