pascal 字符排大小 帮看我的程序
发布网友
发布时间:2022-04-27 12:00
我来回答
共2个回答
热心网友
时间:2023-09-17 03:17
都不知道你这个是哪门子排序..
你想弄冒泡还是插排?感觉是一个糅合版本..
冒泡法的话,改成:
var
i,k,temp:longint;
code:array[1..32767] of longint;
s:ansistring;
c:boolean;
begin
i:=1;
readln(s);
for i:=1 to length(s) do
code[i]:=ord(s[i]);
c:=true;
while c do begin
c:=false;
for k:=1 to i-1 do
if code[k]>code[k+1] then
begin
temp:=code[k];
code[k]:=code[k+1];
code[k+1]:=temp;
c:=true;
end;
end;
for k:=1 to i do
begin
write(chr(code[k]));
end;
writeln;
end.
但是看你的数组大小,这样做会超时,因为冒排是平方级的.
其实字符总数最多就256个,这种情况最好使用计数排序.
var i,j:integer;
s:ansistring;
hash:array[0..256]of integer;
begin
readln(s);
for i:=1 to length(s) do
inc(hash[ord(s[i])]);
for i:=0 to 256 do
for j:=1 to hash[i] do
write(chr(i));
writeln;
end.
热心网友
时间:2023-09-17 03:18
刚学、