归并排序与插入排序-C++实现

来源:互联网 发布:c51单片机计算器 编辑:程序博客网 时间:2024/06/04 19:18
极限值的头文件#include <limits.h>
 归并排序
void merge(int *aList,int l,int m,int h){    int n1 = m-l+1;    int n2 = h-m;    int *left = new int[n1+1];    int *right = new int[n2+1];    int i,j,k;    for(i= 0;i<n1;++i)    {        left[i]=aList[l+i];    }    for (j= 0;j<n2;++j)    {        right[j]=aList[m+1+j];    }    left[n1] = INT_MAX;    right[n2] = INT_MAX;    for (i=0,j=0,k=l;k<=h;++k)    {        if (left[i]<=right[j])        {            aList[k] = left[i];            ++i;        }        else        {            aList[k] = right[j];            ++j;        }    }    delete left;    delete right;}void merge_sort(int *alist,int left,int right){    if (right>left)    {        int mid= (right+left)/2;        merge_sort(alist,left,mid);        merge_sort(alist,mid+1,right);        merge(alist,left,mid,right);    }}

插入排序

void insert_sort(int *alist,int count){       for (int j=1;j<count;++j)    {        int key = alist[j];        int i=j-1;        for (;i>=0&&alist[i]>key;--i)        {            alist[i+1] = alist[i];        }        alist[i+1]=key;    }}

推荐阅读:http://blog.csdn.net/left_la/article/details/8656953

 

                                             
0 0
原创粉丝点击