#include<stdlib.h>
#include<stdio.h>
void Merge( int source[] , int temp[] , int start , int mid , int end )
{
int i = start , j = mid + , k = start ;
while ( i != mid + && j != end + )
{
if( source[i] > source[j] )
temp[k++] = source[i++];
else
temp[k++] = source[j++];
}
while( i != mid + )
temp[k++] = source[i++];
while( j != end + )
temp[k++] = source[j++];
for( i = start ; i <= end ; i++ )
source[i] = temp[i];
} //ÄÚ²¿Ê¹Óõݹé
void MergeSort( int source[] , int temp[] , int start , int end )
{
int mid;
if( start < end )
{
mid = ( start + end ) / ;
MergeSort( source , temp , start , mid );
MergeSort( source , temp , mid+ , end );
Merge( source , temp , start , mid , end );
}
}
int main()
{
int a[]={,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,};
int i,b[];
MergeSort( a , b , , sizeof(a)/sizeof(a[])- );
for( i = ; i < sizeof(a)/sizeof(a[]) ; i++ )
printf( "%d\t" , a[i] );
printf("\n");
return ;
}

Merge

下面这种是总的写法:

 #include<stdio.h>
#include<string.h>
void Merge_Sort( int *a , int l , int r )
{
int len = r - l ;
if( len <= ) return;
int mid = l + len/ ;
Merge_Sort( a , l , mid ) ;
Merge_Sort(a , mid, r);
int p1 = l,p2 = mid;
int temp[];
for(int i = l ; i < r ; i++ )
{
if( p1 == mid)
{
temp[i] = a[p2];
p2++;
}
else if( p2 == r)
{
temp[i] = a[p1];
p1++;
}
else
{
if( a[p1] < a[p2] )
{
temp[i] = a[p1];
p1++;
}
else
{
temp[i] = a[p2];
p2++;
}
}
}
for(int i = l ; i < r ; i++ )
a[i] = temp[i];
} int main()
{
int n,i;
int a[] ={,,,,,,,}; Merge_Sort( a , , sizeof(a)/sizeof(int) );
for( i = ; i < sizeof(a)/sizeof(int) ; i++ )
printf("%d ",a[i]);
return ;
}

Merge

Merge Sort的更多相关文章

  1. [算法]——归并排序(Merge Sort)

    归并排序(Merge Sort)与快速排序思想类似:将待排序数据分成两部分,继续将两个子部分进行递归的归并排序:然后将已经有序的两个子部分进行合并,最终完成排序.其时间复杂度与快速排序均为O(nlog ...

  2. SQL Tuning 基础概述06 - 表的关联方式:Nested Loops Join,Merge Sort Join & Hash Join

    nested loops join(嵌套循环)   驱动表返回几条结果集,被驱动表访问多少次,有驱动顺序,无须排序,无任何限制. 驱动表限制条件有索引,被驱动表连接条件有索引. hints:use_n ...

  3. 归并排序(Merge Sort)

    归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序列合并,得到完全有序的序列:即先使每个子序列有序,再使子序 ...

  4. 归并排序(merge sort)

    M erge sort is based on the divide-and-conquer paradigm. Its worst-case running time has a lower ord ...

  5. Summary: Merge Sort of Array && 求逆序对

    常用算法(后面有inplace版本): package ArrayMergeSort; import java.util.Arrays; public class Solution { public ...

  6. 基础排序算法之并归排序(Merge Sort)

    并归排序是学习分治法 (Merge Sort) 的好例子.而且它相对于选择,插入,冒泡排序来说,算法性能有一定提升.我首先会描述要解决的问题,并给出一个并归排序的例子.之后是算法的思路以及给出伪代码. ...

  7. Divide and Conquer.(Merge Sort) by sixleaves

    algo-C1-Introductionhtml, body {overflow-x: initial !important;}html { font-size: 14px; }body { marg ...

  8. STL 源代码剖析 算法 stl_algo.h -- merge sort

    本文为senlie原创.转载请保留此地址:http://blog.csdn.net/zhengsenlie merge sort ----------------------------------- ...

  9. Sort list by merge sort

    使用归并排序对链表进行排序 O(nlgn) 的时间效率 /** * Definition for singly-linked list. * struct ListNode { * int val; ...

  10. oracle表连接------&gt;排序合并连接(Merge Sort Join)

    排序合并连接 (Sort Merge Join)是一种两个表在做连接时用排序操作(Sort)和合并操作(Merge)来得到连接结果集的连接方法. 对于排序合并连接的优缺点及适用场景例如以下: a,通常 ...

随机推荐

  1. Jenkins进阶系列之——11修改Jenkins用户的密码

    说明:本方法仅适用于jdk6+.tomcat6+和Jenkins专有用户数据库的Jenkins! 很多童鞋在使用jenkins的时候忘记密码了,然后各种蛋疼.最近闲着无事,折腾了下.好了,闲话少扯. ...

  2. 关于android使用ksoap2报Caused by: java.lang.ClassCastException: org.ksoap2.SoapFault cannot be cast to org.ksoap2.serialization.SoapObject

    Caused by: java.lang.ClassCastException: org.ksoap2.SoapFault cannot be cast to org.ksoap2.serializa ...

  3. 小白学习mysql之存储过程的优劣分析以及接入控制

    存储过程的优劣 存储过程是一组实现特定功能的SQL语句集合,存储过程一经编译便存储在了服务器上,可以通过调用存储过程的名字以及传入相应的参数来使用存储过程.要高层次的掌握存储过程,不能觉得依葫芦画瓢, ...

  4. Bootstrap2和3的区别

    如果你需要兼容IE8甚至是IE7和IE6,那么只能选择Bootstrap2,虽然它自身在IE6的效果也并不完美.     但是倘若你跟随时代的脚步,并且面向的客户也很高端大气上档次地选择只需要兼容高级 ...

  5. [AaronYang]C#人爱学不学8[事件和.net4.5的弱事件深入浅出]

    没有伟大的愿望,就没有伟大的天才--Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 事件-我的讲法 老师常告诉我,事件是特殊的委托,为委托提供了一种发布/订阅机制. ...

  6. rational rose USE CASE

  7. Windows Office key 持续更新地址

    微软 Windows  Office 系列序列号,每日都有更新,上面显示的基本都可用,包括MAK及Retail Key. Windows 10   http://textuploader.com/52 ...

  8. OC基础--ARC的基本使用

    一.ARC的判断准则:只要没有强指针指向对象,就会释放对象 二.ARC特点: 1>不允许使用release.retain.retainCount 2>允许重写dealloc,但是不允许调用 ...

  9. css左右侧自动填充宽度布局

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  10. 读JS高级——第五章-引用类型 _记录

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...