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,通常 ...
随机推荐
- 简单的3个SQL视图搞定所有SqlServer数据库字典
网上有很多SQL SERVER数据库字典的SQL语句,七零八落,我在工作整理了一下思路,总结SQL代码如下.数据库字典包括表结构(分2K和2005).索引和主键.外键.约束.视图.函数.存储过程.触发 ...
- jQuery理解之(一)动画与特效
本节主要降级和学习jQuery的自动显隐,渐入渐出.飞入飞出.自定义动画等. 1.显示和隐藏hide()和show() 对于动画来说,显示和隐藏是最基本的效果之一,本节简单介绍jQuery的显示和隐藏 ...
- Source Tree for MAC1.6
Atlassian ID has become the new Atlassian Account. Read more about it here. After some great communi ...
- python 读写文件和设置文件的字符编码
一. python打开文件代码如下: f = open("d:\test.txt", "w") 说明:第一个参数是文件名称,包括路径:第二个参数是打开的模式mo ...
- 利用 NSSortDescriptor 对 NSMutableArray 排序
有时我们在NSMutableArray中存的是网络请求返回的数据,而每一个元素又是一个NSDictionary,如果这时候需要把数组中的元素按照每个元素字典中某一个key来排序,那么我们可以利用Obj ...
- 每天一个linux命令(48):netstat命令
netstat命令用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况.netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP ...
- 【Matplotlib】 标注摄氏度符号
之前论文中作图遇到的,其实也很简单. 关键的代码如下: ax.set_xlabel('Temperature ($^\circ$C)') 完整的样例代码如下: # -*- coding: utf-8 ...
- 似然估计中为什么要取对数以GMM为例
1.往往假设特征之间独立同分布,那么似然函数往往是连城形式,直接求骗到不好搞,根据log可以把连乘变为连加. 2.另外概率值是小数,多个小数相乘容易赵成浮点数下溢,去log变为连加可以避免这个问题. ...
- TCP/IP详解 学习六
从ip层看路由表 选路策略 选路策略:决定把哪些路由放到路由表的规则. Ip执行选路机制,而路由守护程序则提供选路策略. Netstat –rn 打印路由表,如果没有-n命令会搜索配置文件,将网络地 ...
- this的使用
1.使用this调用本类中的属性 class Person{ private String name; private int age; public Person(String name,int a ...