主题:急需各位帮助呀.急急急,希望各位帮忙,谢谢
findtea
[专家分:0] 发布于 2006-05-26 17:33:00
急需要一个用C++编写的程序. 快速排序,合并排序.而且这个程序要基于分治策略.
在哪个网站也能找到这样的程序??
回复列表 (共3个回复)
沙发
liujiwei [专家分:3840] 发布于 2006-05-27 11:24:00
#include "stdafx.h"
using namespace std;
const int Max = 10;
int _tmain(int argc, _TCHAR* argv[])
{
int e[Max];
int stack[Max][2];
for(int i=0;i<10;i++)
e[i]=rand()%139;
int a,b,low,high,c;
stack[0][0]=0,stack[0][1]=Max-1;
int top = 0;
while(top>=0)
{
low=a=stack[top][0];
high=b=stack[top][1];
top--;
c=e[a];
while(a<b)
{
while(e[b]>c&&a<b)
b--;
if(a<b)
e[a++]=e[b];
while(e[a]<c&&a<b)
a++;
if(a<b)
e[b--]=e[a];
}
e[a]=c;
if(a-1>low)
{
top++;
stack[top][0]=low;
stack[top][1]=a-1;
}
if(high>a+1)
{
top++;
stack[top][0]=a+1;
stack[top][1]=high;
}
}
for(int i=0;i<Max;i++)
cout<<e[i]<<" ";
cout<<endl;
return 0;
}
这是快速排序的非递归算法
板凳
蹦蹦的笨笨 [专家分:430] 发布于 2006-05-29 10:20:00
想问您一下:分治策略是什么意思?请指教,我不是很清楚
3 楼
liujiwei [专家分:3840] 发布于 2006-05-29 15:54:00
分制法 就是分而制治
不断的进行划分
当划分为最的小的单元的时候
在单元内进行排序
然后在不断的合并
我来回复