排序算法之归并排序

来源:互联网 发布:led手机显示屏软件 编辑:程序博客网 时间:2024/06/14 20:38
#include <stdio.h>int main(){    void marge_sort(int arr[],int first,int last);    void merge(int arr[],int low,int mid,int high);    int data[10];    int i=0,length=10;    for(i=0;i<10;i++)    {        scanf("%d",&data[i]);    }    merge_sort(data,0,length-1);    for(i=0;i<10;i++)    {        printf("%d ",data[i]);    }    return 0;}void merge(int arr[],int low,int mid,int high){    int i,j;    int *data = (int *)malloc(sizeof(int)*(high-low+1));    int left_low = low;    int left_high = mid;    int right_low = mid+1;    int right_high = high;    for(i=0;left_low<=left_high&&right_low<=right_high;i++)    {        if(arr[left_low]<arr[right_low])        {            data[i] = arr[left_low++];        }        else            data[i] = arr[right_low++];    }    while(left_low<left_high)    {        data[i++] = arr[left_low++];    }    while(right_low<right_high)    {        data[i++] = arr[right_low++];    }    for(i=0;i<high-low+1;i++)        arr[low++] = data[i];    free(data);    return;}void merge_sort(int arr[],int first,int last){    int mid;    if(first<last)    {        mid = (last+first)/2;        merge_sort(arr,first,mid);        merge_sort(arr,mid+1,last);        merge(arr,first,mid,last);    }    return 0;}
0 0
原创粉丝点击