主题:排序算法讨论(加30分)
dorremon1992
[专家分:870] 发布于 2006-10-14 19:19:00
有没有什么除基本的一些排序外,
有没有什么稀奇,奇妙的排序算法(效率不一定要高)。
加30分[em5]
注意:是算法哦![em1]
回复列表 (共21个回复)
11 楼
游侠UFO [专家分:1200] 发布于 2006-10-07 12:30:00
hush排序:
首先建立一个很长的数组做hush表,表中元素类型为布尔型,初始值为false.然后读入数据,把hush表中下标等于这个数的元素赋值为true.然后:
for i:=1 to n do
if hush[i] then write(i,' '); //从小到大
for i:=n downto 1 do
if hush[i] then write(i,' '); //从大到小
这个排序算法希奇吧?时间效率很高,不过空间效率就......呵呵
下面是代码:
假设读入十个数,范围是1~100
{init}
for i:=1 to 100 do hush[i]:=false;
{sort}
for i:=1 to 10 do
begin
read(x);
hush[x]:=true;
end;
{output}
for i:=1 to 100 do
if hush[i] then write(i,' '); //从小到大
for i:=100 downto 1 do
if hush[i] then write(i,' '); //从大到小
12 楼
循甲天书 [专家分:100] 发布于 2006-10-09 12:59:00
可以建立一个数组,0——————10000,每读一个就在数组上作记录,最后按顺序输出数组上作记录的上标
13 楼
游侠UFO [专家分:1200] 发布于 2006-10-14 21:28:00
[quote]可以建立一个数组,0——————10000,每读一个就在数组上作记录,最后按顺序输出数组上作记录的上标[/quote]
靠...这不就是我说的HUSH排序?
14 楼
amyhab [专家分:120] 发布于 2006-10-15 16:57:00
选择排序
var
a:array[1..n]of integer;
t,i,j:integer;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]<a[j] then //升序(a[i]>a[j])
then
begin
t:=a[i];
a[i]:=a[j];
a[j]:=t;
end;
for i:=1 to n do
write(a[i]);
end.
冒泡排序
var
a:array[1..n]of integer;
t,i,j:integer;
begin
for i:=1 to n-1 do
for j:=1 to i+1 do
if a[i]<a[j] then //升序(a[i]>a[j])
then
begin
t:=a[i];
a[i]:=a[j];
a[j]:=t;
end;
for i:=1 to n do
write(a[i]);
end.
______________________________________________________________________
[em1][em1][em9][em9][em9]
15 楼
冰中的火 [专家分:90] 发布于 2006-10-15 21:15:00
冒泡
选排
堆排
桶排
树排
快排
对8000个随机自然数进行排序,桶排最快!!!!1
16 楼
bigchen [专家分:1940] 发布于 2006-10-21 21:46:00
选择排序!
堆排序!
冒泡排序!
插入排序!
二分排序!
快速排序!
希尔排序!
…………………………………………………………
17 楼
编程黑客 [专家分:1660] 发布于 2007-02-11 16:59:00
堆排序??
我从来没听说过啊??
能否赐教?
18 楼
angwuy [专家分:2280] 发布于 2007-02-11 18:16:00
堆排序就是建立一个二叉树,要求每个节点大于它的左子节点和小于它的右子节点,最后用前序输出,就是结果了
19 楼
游侠UFO [专家分:1200] 发布于 2007-02-12 20:01:00
[quote]堆排序就是建立一个二叉树,要求每个节点大于它的左子节点和小于它的右子节点,最后用前序输出,就是结果了[/quote]
按照你的说法的话,应该是按中序输出吧?
左子节点<父亲节点<右子节点
很明显应该中序吧!
所以这并不是堆排序的思路.具体思路可以查书或baidu上搜.
20 楼
angwuy [专家分:2280] 发布于 2007-02-13 08:00:00
堆排序很久没用过,记错了
我来回复