用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

空心    -  云代码空间

——

归并排序

2014-05-31|1373阅||

摘要:template  void Sort::MergeSort(T* array, int left, int right)  {      if(left < right)      {          int mid = (left + right) / 2;     

template 
void Sort::MergeSort(T* array, int left, int right) 

    if(left < right) 
    { 
        int mid = (left + right) / 2; 
        MergeSort(array, left, mid); 
        MergeSort(array, mid + 1, right); 
        Merge(array, left, mid, right); 
    } 

//合并两个已排好序的子链 
template 
void Sort::Merge(T* array, int left, int mid, int right) 

    T* temp = new T[right - left + 1]; 
    int i = left, j = mid + 1, m = 0; 
    while(i <= mid && j <= right) 
    { 
        if(array[i] < array[j]) 
        { 
            temp[m++] = array[i++]; 
        } 
        else 
        { 
            temp[m++] = array[j++]; 
        } 
    } 
    while(i <= mid) 
    { 
        temp[m++] = array[i++]; 
    } 
    while(j <= right) 
    { 
        temp[m++] = array[j++];

    } 
    for(int n = left, m = 0; n <= right; n++, m++) 
    { 
        array[n] = temp[m]; 
    } 
    delete temp; 
}

顶 0踩 0收藏
文章评论
    发表评论

    个人资料

    • 昵称: 空心
    • 等级: 中级程序员
    • 积分: 14
    • 代码: 0 个
    • 文章: 6 篇
    • 随想: 0 条
    • 访问: 1 次
    • 关注

    人气代码

      标签

      最新提问

        站长推荐