int d[100] = {0};
int s[10] = {32, 21, 67, 11, 5, 43, 99, 18, 22, 87};
void merg(int left,int right){
int mid=(left+right)/2;
int i=left,j=mid+1,k=0;
while(i<=mid&&j<=right)
{
if(s[i]<s[j])
{
d[k++]=s[i++];
}
else
{
d[k++]=s[j++];
}
}
while(i<=mid)d[k++]=s[i++];
while(j<=right)d[k++]=s[j++];
for(i=left,k=0;i<=right;i++,k++)s[i]=d[k];
}
void mergesort(int left,int right){
if(left<right){
int mid=(left+right)/2;
mergesort(left,mid);
mergesort(mid+1,right);
merg(left,right);
}
}
int main()
{
mergesort(0,9);
for(int i = 0; i < 10; i++)
{
cout << s[i] << endl;
}
return 0;
}
分+治+合之典范
注意,算法的时候,可以申请一些全局的大数组。
但是如果做工程,外面自己先声明下 然后再把这个数组指针传进函数里
分享到:
相关推荐
归并排序(Merge Sort)是一种采用分治法(Divide and Conquer)策略的排序算法。该算法首先将已有序的子序列合并,得到完全有序的序列。在归并排序中,合并操作是将两个有序表合并成一个有序表的过程。 归并排序的...
归并排序:归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,效率为O(n log n)。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型...
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段...
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段...
合并排序(MERGE SORT)是又一类不同的排序方法,合并的含义就是将两个或两个以上的有序数据序列合并成一个新的有序数据序列,因此它又叫归并算法。它的基本思想就是假设数组A有N个元素,那么可以看成数组A是又N个...
本文实例讲述了C++实现的归并排序算法。分享给大家供大家参考,具体如下: 归并排序 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法。 该算法是采用分治法(Divide and Conquer)的一个非常典型的...
定义:归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子...
归并排序(Merge Sort)是一种采用分治法(Divide and Conquer)策略的排序算法。该算法首先将已有序的子序列合并,得到完全有序的序列。在归并排序中,合并操作是将两个有序表合并成一个有序表的过程。 归并排序的...
当您不记得某些排序算法并且不想使用其他繁重的库(例如std::sort ,您可以轻松地将代码复制到此处并修改代码以实现您的目标。 我实现的排序算法是: 插入排序 void insertion_sort ( unsigned *a, long length);...
基于c++的归并排序算法。排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 另一种是非比较排序,时间复杂度可以达到...
完全按照王晓东所得编著计算机算法设计与分析第五版课本实现的归并排序C++代码,实现了完整的归并排序功能,代码证界清晰,可读性较好。
4.2 C++ STL的各种实现版本 49 4.2.1 HP STL 49 4.2.2 SGI STL 50 4.2.3 STLport 50 4.2.4 P.J.Plauger STL 50 4.2.5 Rouge Wave STL 50 4.3 C++ STL的Visual C++编译 50 4.4 C++ STL的体系结构 52 ...
4.2 C++ STL的各种实现版本 49 4.2.1 HP STL 49 4.2.2 SGI STL 50 4.2.3 STLport 50 4.2.4 P.J.Plauger STL 50 4.2.5 Rouge Wave STL 50 4.3 C++ STL的Visual C++编译 50 4.4 C++ STL的体系结构 52 ...
归并排序 Merge Two Sorted Arrays Merge Two Sorted Lists Merge k Sorted Lists Sort List 快速排序 Sort Colors Kth Largest Element in an Array 桶排序 First Missing Positive 计数排序 H-Index 基数排序 ...
4.2 C++ STL的各种实现版本 49 4.2.1 HP STL 49 4.2.2 SGI STL 50 4.2.3 STLport 50 4.2.4 P.J.Plauger STL 50 4.2.5 Rouge Wave STL 50 4.3 C++ STL的Visual C++编译 50 4.4 C++ STL的体系结构 52 ...
归并排序 Merge-Sort 最小堆 Min-Heap 乘法逆元 Modular-Multiplicative-Inverse 仅支持单点修改的可持久化线段树(维护区间和值) Persistent-Segment-Tree(Sum) 试除法素数测试 Prime-Check(Naive) 线性的素数...
归并排序 Topological-Sort-拓扑排序 Dynamic Programming 动态规划 Greedy 贪心算法 Back Track 回溯法 Sliding Window 滑动窗口 Depth First Search 深度优先搜索 Breadth First Search 广度优先搜索 Bit ...
(1)多路平衡归并排序(K-Merge) (2)置换-选择排序(Repl_Selection) 三、 运行环境 1. 硬件:Pentium100以上PC机。 2. 软件:Windows95及以上版本的操作系统。 四、 运行 本系统的执行文件为DSDEMOW.EXE...