1、归并排序
#include<stdio.h>
#include<stdlib.h>

typedef int DataType;

void merge(DataType arr[], int low, int mid, int high){
DataType *arrTmp;
arrTmp = (DataType *)malloc(sizeof(DataType)*(high-low+1));
if(arrTmp==NULL)return;

int i=low, j=mid+1, p=0;
while(i<=mid&&j<=high){
arrTmp[p++] = arr[i]<arr[j]?arr[i++]:arr[j++];
}
while(i<=mid){
arrTmp[p++] = arr[i++];
}
while(j<=high){
arrTmp[p++] = arr[j++];
}
p = 0;
while(p<high-low+1){
arr[low+p] = arrTmp[p];
p++;
}
free(arrTmp);
arrTmp = NULL;
}

void merge_sort(DataType arr[], int low, int high){
int mid;
if(low<high){
mid = (low+high)/2;
merge_sort(arr, low, mid);
merge_sort(arr, mid+1, high);
merge(arr, low, mid, high);
}
}

#define DATA_NUM 10
void main(){
DataType a[DATA_NUM] = {3, 5, 1, 43, 53, 4, 12, 9, 30, 11};
int i = 0;
merge_sort(a, 0, DATA_NUM-1);
while(i<DATA_NUM){
printf("%d ", a[i++]);
}
printf("\n");
}
2、快速排序



































































































































来源:https://www.cnblogs.com/kissrat/archive/2009/10/13/1582826.html