C++合并排序算法
2013-11-03 13:04
411 查看
#include<iostream> using namespace std; int Merge(int Sumarray[],int Larray[],int Llength,int Rarray[],int Rlength){ int i=0,j=0,k=0; while ((i<Llength+1)&&(j<Rlength+1)) { if (Larray[i]<=Rarray[j]) { Sumarray[k]=Larray[i]; i++; }else { Sumarray[k]=Rarray[j]; j++; } k++; } if (i==Llength+1) { while (j<Rlength+1) { Sumarray[k]=Rarray[j]; j++; k++; } } else { while (i<Llength+1) { Sumarray[k]=Larray[i]; i++; k++; } } return 0; } int Mergesort(int Inputarray[],int nLow,int nHigh){ if ((nHigh-nLow+1)>1){ int nMid = (nLow+nHigh+1)/2; int* nLeft = new int[nMid]; int* nRight = new int[nHigh - nMid + 1]; for (int i = 0; i < nMid; i++) { nLeft[i] = Inputarray[i]; } for (int j = 0 ; j < (nHigh-nMid+1); j++) { nRight[j] = Inputarray[j+nMid]; } Mergesort(nLeft,nLow,nMid-1); Mergesort(nRight,nLow,nHigh-nMid); Merge(Inputarray,nLeft,nMid-1,nRight,nHigh-nMid); delete [] nRight; delete [] nLeft; return 0; } } int main(){ int array[10] = {15,7,3,19,4,63,2,99,18,1}; Mergesort(array, 0, 9); for(int i = 0; i < 10; i++) { cout << array[i] << " "; } cout<<endl; return 0; }
相关文章推荐
- 关于ceiling 的C语言实现
- C/C++一道题目的答案-函数指针与指针函数
- 通过gr-modtool在gnuradio中编写自己的C++模块
- 高地址和低地址
- C++简单的应用方程类极其成员函数
- In which of the following does a C++ developer use the placement new syntax to make new allocate an
- [c++]关于template和namespace的关联名字查找ADL
- @C++11 的新特性 对C++技术格局的影响
- C++11新特性学习笔记
- C++调用IDL程序的做法(二)
- C++调用IDL程序的做法(二)
- 【VC++游戏开发#四】2D篇 —— 物理建模(一) 匀速直线运动:字符串"撞墙反弹"效果
- 用C语言简单加密解密
- C/C++中指针数组、数组指针、指针函数、函数指针的比较
- C++数组和类
- Google C++编程规范
- 学了C语言,如何利用cURL写一个程序验证某个网址的有效性?
- C++中一些库的使用
- C++ 拷贝构造函数
- 创建windows下的第一个C++ XPCOM组件