回 帖 发 新 帖 刷新版面

主题:一道令我困惑不已的题

有怎么一道题:
任意输入20个数字,然后从大到小输出。
我知道这道题可能很菜,但是我还是希望有高手赐教,晚辈不胜感激~
联系方式:QQ:439883777

回复列表 (共7个回复)

沙发

program paixu;

var
a:array[1..20]of integer;
i,j,temp:integer;

begin
for i:=1 to 20 do readln(a[i]);

for i:=1 to 19 do
   for j:=i+1 to 20 do
     if a[j]>a[i] then
       begin
        temp:=a[i];
        a[i]:=a[j];
        a[j]:=temp;
       end;

for i:=1 to 20 do writeln(a[i]);


end.



只是一个简单的选择排序
其实排序在做题时只是一个小过程而已

板凳

先排序 后输出
不用考虑原数据是否被打乱 要容易 很多

3 楼

记住冒泡
for i:=1 to 19 do
begin
for j:=i to 20 do
begin
if a[i]<a[j] then
换位
end;
end;
其他的你肯定会

4 楼

插入的话
var
a:array[1..20] of longint;
i,k,c:integer;
b:array[1..25] of longint;
begin
i:=1;
while i<>21 do
begin
readln(a[i]);
for k:=1 to i-1 do
if a[i]>a[k] then
begin
for c:=1 to i-k do
b[c]:=a[k+c-1];
a[k]:=a[i];
for c:=1 to i-k do
a[k+c]:=b[c];
end;
i:=i+1;
end;
for i:=1 to 20 do
write(a[i],' ');
writeln;
readln;
end.

5 楼

各位达人是不是要把所有的排序都发到这个帖里啊?

6 楼

笑一个

那会不会累死?
就20个数而已……时间复杂度不超过一个很小的常数……
没必要用O(nlogn)乃至O(n)的吧……
快排,归排,计排,基排,堆排,桶排……我知道的稍微复杂点的排序就6种……

7 楼

还有三楼的,j<-i+1 to n才好吧……
另外,这显然是选择排序,不要和冒泡混了

我来回复

您尚未登录,请登录后再回复。点此登录或注册