排序之归并排序

快速排序的自底向上

Merger Sort
 void mergearray(int numbers[],int first,int mid,int last,int temp[])
{
        int start = first;
        int end = mid + 1;
        int middle = mid;
        int index = 0;
        int i = 0;
        while(start <= middle && end <= last)
        {   
                if(numbers[start] <  numbers[end])
                {   
                        temp[index++] = numbers[start++];
                }   
                else
                {   
                        temp[index++] = numbers[end++];
                }   
        }   
        while(start <= middle)
        {   
                temp[index++] = numbers[start++];
        }   
        while(end <= last)
        {   
                temp[index++] = numbers[end++];
        }   
        for(i = 0; i < index ; i++)
        {   
                numbers[i] = temp[i];
        }   
}
/* merge sort */
int merge_sort(int numbers[] , int first ,int last,int temp[])
{
        if(first < last)
        {   
                int mid = (last + first) / 2;
                /* left of array is sort */
                merge_sort(numbers,first,mid,temp);
                /* right of array is sort */ 
                merge_sort(numbers,mid + 1,last,temp);
                /* merge the left and rigth of array */
                mergearray(numbers,first,mid,last,temp);
        }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,327评论 0 2
  • 简单排序 冒泡排序:循环遍历左右比较,较小者左移或较大者后移; 选择排序:在未排序序列中找到最小者元素一次放到已排...
    王然Gondole阅读 1,476评论 0 2
  • 面试中常用的几个基本算法整理记录(二) 无意中看到了面试中的 10 大排序算法总结原文地址记录一下,方便查找。 查...
    190CM阅读 1,861评论 1 12
  • 我有一个愿望, 活得久一点,但不能太久, 比你说的一辈子,短那么一点点。 我想活得久一点, 我不是贪心, 只是想看...
    笑容面具阅读 274评论 1 2
  • 每次呼吸 新鲜和浑浊相对 不怯岁月不饶 迈出的双腿 左脚盛满激情和理想先行 右脚暂放顾虑与考量跟上 一前一后 时左...
    羽中文阅读 226评论 1 9

友情链接更多精彩内容