帮忙啊高手们~~现在就要答案实现这个程序!!太急我又很菜帮我看看着个题~谢谢了

anjiaosj007 2002-08-09 10:50:08
有一组数字(3,10,6,8,98,22),请编程排序(升降序皆可),语言不限,算法不限,但须注明是何种算法。
...全文
48 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackaltan 2002-08-12
  • 打赏
  • 举报
回复
分支—合并排序法(procedure MERGESORT)
输入:集合S的所有元素A[1],A[2]...A[n]
输出:A[x1]<=A[x2]<=...<=A[xn],它们是S中元素的一个非减排序。这里,x1,x2...xn是1,2...n的某个排列。
方法:过程MERGESORT,这里要调用过程MERGEI。
——————————————————————————————————————————————————————————————————
procedure MERGESORT
integer n;
array:A[1:n] of integer;
procedure SORT(A,i,j);
integer:i,j,m;
array:A[i:j] of integer;
begin
if j-i=1 then
if A[i]>A[j] then
交换A[i]和A[j]
else begin
m=(i+j-1)/2;
SORT(A,i,m);
SORT(A,m+1,j);
MEGREI(A[i:m],A[m+1:j]);
end
end;
begin
read(n,A);
Sort(A,1,n);
write(A);
end



——————————————————————————————————————————————————————————————————



合并两个已排序的序列(procedure MERGEI)
输入:A={a1,a2,...,am}和B={b1,b2,...,bn},其中a1<=a2<=...<=am;b1<=b2<=...<=bn。
输出:序列C={c1,c2,...,cm+n},且有c1<=c2<=...<=cm+n,其中C=A 交 B
方法:过程MERGEI.
——————————————————————————————————————————————————————————————————
procedure MERGEI
begin
i=1;j=1;k=1;
while i<=m和j<=n do
if ai<bj then
begin
ck=ai;
i=i+1;
k=k+1;
end
else
begin
ck=bj;
j=j+1;
k=k+1;
end;
if i>m then
依次将bj,bj+1,...,bn赋值给ck,ck+1,...,cm+n
else
依次将ai,ai+1,...,am赋值给ck,ck+1,...,cm+n
end
——————————————————————————————————————————————————————————————————

以上是一个接近最快的排序算法了,时间复杂度为O(n .log2(n))

panxiongfei 2002-08-11
  • 打赏
  • 举报
回复
同意搂上的,真要重思想,得分好几种情况!初态,规模,时间要求...
leojay 2002-08-11
  • 打赏
  • 举报
回复
其实就几个数的话,你用选择排序或冒泡都可以的。
jackaltan 2002-08-11
  • 打赏
  • 举报
回复
思想:分治与平衡
写一个快速排序的先。
我写的是伪代码,重在思想

Procedure QUICKSORT(S);
if ||S||<=2 then
begin
将S中的元素直接排序;
end
else
begin
从S集合中随机的抽取一个元素a;
把S中的元素分成小于a,等于a和大于a的三个子集S1,S2,S3;
return(QUICKSORT(s1)接着S2接着QUICKSORT(S3))
end


如果觉得好的话,我下次再发一个最高效的排序算法给你(目前为止)
================================================================

CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!

★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。

★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。

Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解压]

jackaltan 2002-08-11
  • 打赏
  • 举报
回复
大虾们:程序和算法不划等号,你们知不知道?!
================================================================

CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!

★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。

★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。

Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解压]

xiechao1976 2002-08-11
  • 打赏
  • 举报
回复
楼上高见,如果没记错,堆排序平均效率最好,可这么几个数,好像也没必要用堆吧.
sxbobo2002 2002-08-11
  • 打赏
  • 举报
回复
问的人还蛮多的嘛!
不会是这么简单的答案吧!!!
难道暗藏杀机!!!
================================================================

CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!

★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。

★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。

Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解压]

wangmin_yjitx 2002-08-11
  • 打赏
  • 举报
回复
我觉得这种题目出的没意思,各种排序算法针对不同情况的时间复杂度不一样,如果给出一个实例来要你选择排序法等于要你先人工看一下待排序的情况, 这不更浪费时间!!!!!
sunspot 2002-08-10
  • 打赏
  • 举报
回复
这不是TOP的面试题么?
d_selenite 2002-08-10
  • 打赏
  • 举报
回复
TOP公司的面试题啊,哈哈
kwok_1980 2002-08-10
  • 打赏
  • 举报
回复
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
int a[6]={3,10,6,8,98,22};
vector<int> vec(a,a+6);
sort(vec.begin(),vec.end());//这是generic algorithm泛型算法
for(int i=0;i<6;i++) //默认为升序
cout<<vec.[i]<<' ';


return 0;
}
assume 2002-08-10
  • 打赏
  • 举报
回复
不要总是责骂,现在别人需要帮助,救人一命。这种问题看样子是学过数据结构,但是没有实际经验。给你一个C++
大致如下:
#include <iostream.h>

void bubble(int[],int);
void main()
{
int array[]={3,10,6,8,98,22};
int len =sizeof(array)/sizeof(int);//个数

bubble (array,len);
}

void bubble (int a[],int size)
{
int i,temp;

for (int pass=1;pass<size;pass++)
{
for (i=0;i<size-pass;i++)
if (a[i].a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
for (i=0;i<size;i++)
cout <<a[i]<<"";
cout<<endl;
}
}

cai3995 2002-08-10
  • 打赏
  • 举报
回复
这这这这
这个问题也能难倒人~~~~~???!!!!!
艾,无语
MadLee 2002-08-10
  • 打赏
  • 举报
回复
函授学校的考题?
starfish 2002-08-10
  • 打赏
  • 举报
回复
FT!怎么这么多人问这个问题呀
简单的排序算法都不会
建议你还是转行吧~~
zhoukun666 2002-08-10
  • 打赏
  • 举报
回复
这玩艺不是一般的难吧!---要使用普通的方法肯定是没分吧!

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧