Merge Sort
#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的更多相关文章
- [算法]——归并排序(Merge Sort)
归并排序(Merge Sort)与快速排序思想类似:将待排序数据分成两部分,继续将两个子部分进行递归的归并排序:然后将已经有序的两个子部分进行合并,最终完成排序.其时间复杂度与快速排序均为O(nlog ...
- SQL Tuning 基础概述06 - 表的关联方式:Nested Loops Join,Merge Sort Join & Hash Join
nested loops join(嵌套循环) 驱动表返回几条结果集,被驱动表访问多少次,有驱动顺序,无须排序,无任何限制. 驱动表限制条件有索引,被驱动表连接条件有索引. hints:use_n ...
- 归并排序(Merge Sort)
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序列合并,得到完全有序的序列:即先使每个子序列有序,再使子序 ...
- 归并排序(merge sort)
M erge sort is based on the divide-and-conquer paradigm. Its worst-case running time has a lower ord ...
- Summary: Merge Sort of Array && 求逆序对
常用算法(后面有inplace版本): package ArrayMergeSort; import java.util.Arrays; public class Solution { public ...
- 基础排序算法之并归排序(Merge Sort)
并归排序是学习分治法 (Merge Sort) 的好例子.而且它相对于选择,插入,冒泡排序来说,算法性能有一定提升.我首先会描述要解决的问题,并给出一个并归排序的例子.之后是算法的思路以及给出伪代码. ...
- Divide and Conquer.(Merge Sort) by sixleaves
algo-C1-Introductionhtml, body {overflow-x: initial !important;}html { font-size: 14px; }body { marg ...
- STL 源代码剖析 算法 stl_algo.h -- merge sort
本文为senlie原创.转载请保留此地址:http://blog.csdn.net/zhengsenlie merge sort ----------------------------------- ...
- Sort list by merge sort
使用归并排序对链表进行排序 O(nlgn) 的时间效率 /** * Definition for singly-linked list. * struct ListNode { * int val; ...
- oracle表连接------>排序合并连接(Merge Sort Join)
排序合并连接 (Sort Merge Join)是一种两个表在做连接时用排序操作(Sort)和合并操作(Merge)来得到连接结果集的连接方法. 对于排序合并连接的优缺点及适用场景例如以下: a,通常 ...
随机推荐
- Jenkins进阶系列之——11修改Jenkins用户的密码
说明:本方法仅适用于jdk6+.tomcat6+和Jenkins专有用户数据库的Jenkins! 很多童鞋在使用jenkins的时候忘记密码了,然后各种蛋疼.最近闲着无事,折腾了下.好了,闲话少扯. ...
- 关于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 ...
- 小白学习mysql之存储过程的优劣分析以及接入控制
存储过程的优劣 存储过程是一组实现特定功能的SQL语句集合,存储过程一经编译便存储在了服务器上,可以通过调用存储过程的名字以及传入相应的参数来使用存储过程.要高层次的掌握存储过程,不能觉得依葫芦画瓢, ...
- Bootstrap2和3的区别
如果你需要兼容IE8甚至是IE7和IE6,那么只能选择Bootstrap2,虽然它自身在IE6的效果也并不完美. 但是倘若你跟随时代的脚步,并且面向的客户也很高端大气上档次地选择只需要兼容高级 ...
- [AaronYang]C#人爱学不学8[事件和.net4.5的弱事件深入浅出]
没有伟大的愿望,就没有伟大的天才--Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 事件-我的讲法 老师常告诉我,事件是特殊的委托,为委托提供了一种发布/订阅机制. ...
- rational rose USE CASE
- Windows Office key 持续更新地址
微软 Windows Office 系列序列号,每日都有更新,上面显示的基本都可用,包括MAK及Retail Key. Windows 10 http://textuploader.com/52 ...
- OC基础--ARC的基本使用
一.ARC的判断准则:只要没有强指针指向对象,就会释放对象 二.ARC特点: 1>不允许使用release.retain.retainCount 2>允许重写dealloc,但是不允许调用 ...
- css左右侧自动填充宽度布局
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 读JS高级——第五章-引用类型 _记录
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...