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,通常 ...
随机推荐
- IDEA SSH
被IDEA各种虐0.0各种配置,没有人教就百度,别人也弄了点,然后整整花了一天,从eclipse转到IDEA真的不容易啊TT
- Angularjs 异步模块加载项目模板
ng-lazy-module-seed(Angularjs 异步模块加载项目模板) 相信做过SPA项目的朋友都遇到过这个问题:页面初始化时需要加载文件太大或太多了,许多文件加载后很可能不会运行到,这是 ...
- [BZOJ 2241][SDOI2011]打地鼠(枚举+预处理)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2241 分析: 鉴于R,C的取值很小,于是可以人为枚举R和C的大小,然后判定这个规格的锤 ...
- Bootstrap3.0学习第七轮(按钮)
详情请查看http://aehyok.com/Blog/Detail/13.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:ht ...
- 阿里百川IMSDK--自定义群聊界面
// 获取群对象 YWTribe *tribe = [self.tribesArray objectAtIndex:indexPath.row]; // 发起群聊 UIViewController * ...
- http状态码介绍
基本涵盖了所有问题HTTP 400 – 请求无效HTTP 401.1 – 未授权:登录失败HTTP 401.2 – 未授权:服务器配置问题导致登录失败HTTP 401.3 – ACL 禁止访问资源HT ...
- Java泛型中E、T、K、V等的含义
Java泛型中的标记符含义: E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Numbe ...
- struts2升级报ActionContextCleanUp<<is deprecated。Please use the new filters
把web.xml中配置struts.xml的文件改成 <?xml version="1.0" encoding="UTF-8"?> <web- ...
- 小菜鸟学 Spring-bean scope (一)
this information below just for study record of mine. 默认情况下:Spring 创建singleton bean 以便于错误能够被发现. 延迟加载 ...
- Java设计模式-解释器模式(Interpreter)
解释器模式是我们暂时的最后一讲,一般主要应用在OOP开发中的编译器的开发中,所以适用面比较窄. Context类是一个上下文环境类,Plus和Minus分别是用来计算的实现,代码如下: public ...