本文主要是介绍那些年耍过的无赖,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
事情的开始是这样的,有个网友在问:
题:求一个字符串排序的函数( 积分:30, 回复:32, 阅读:684) 来自:lingm, 时间:2004-04-16 15:26, ID:2563345 |
然后网友给出了一个测试文件,一个全是大写字母的文件,就是一个巨大的字符串。大家就开始提出各种优化方案,冒泡、快速排序、分区快速排序。大家优化的不亦乐乎。
例如这位网友说:
来自:TYZhang, 时间:2004-04-16 16:29, ID:2563480 |
为啥全是“冒泡”,来个快速的: function QuickSortStr(S:String):String; procedure QuickSort(L,H:Integer); var I,J:Integer; X:Char; begin if L>=H then Exit; I:=L;J:=H;X:=S[I]; while(I<>J) do begin while (I<J)and(S[J]>X) do Dec(J); if I<J then begin S[I]:=S[J]; Inc(I); end; while (I<J)and(S[I]<=X) do Inc(I); if I<J then begin S[J]:=S[I]; Dec(J); end; end; S[I]:=X; QuickSort(L,I-1); QuickSort(I+1,H); end; begin QuickSort(1,Length(S)); Result:=S; end; |
又例如这位网友:
来自:TYZhang, 时间:2004-04-16 16:37, ID:2563528 |
to hfghfghfg: 不好意思,刚才的代码有误: function QuickSortStr(S: string): string; procedure QuickSort(L, H: Integer); var I, J: Integer; X: Char; begin if L >= H then Exit; I := L; J := H; X := S[I]; while (I <> J) do begin while (I < J) and (S[J] > X) do Dec(J); if I < J then begin S[I] := S[J]; Inc(I); end; while (I < J) and (S[I] <= X) do Inc(I); if I < J then begin S[J] := S[I]; Dec(J); end; end;// S[I] := X; QuickSort(L, I - 1); QuickSort(I + 1, H); // end;此处end要上移,否则时间繁杂度增加 end; begin QuickSort(1, Length(S)); Result := S; end; |
来自:kouchun, 时间:2004-04-16 16:40, ID:2563536 |
樓上的巨汁..我的運行到假死了... |
这时俺就开始耍无赖了:
俺提出了一个思路 ,反正就是 A到Z , 26 个字母(这个题目规定的),所以俺不排序了,俺统计一下每个字母出现的次数,然后再输出一下。
function ss(v: string): string;
vardata: array['A'..'Z'] of integer;i: Integer;c: char;str: string;
beginFillChar(data, length(data) * 4, 0);for i := 1 to length(V) doinc(data[V[i]]);result := '';for c := 'A' to 'Z' doif data[C] > 0 thenbeginsetLength(str, data[C]);FillChar(str[1], data[C], C);result := result + str;end;end;
结果也是很明显的:
统计法 10 毫秒 VS 快速排序 3455 毫秒
来自:kouchun, 时间:2004-04-16 17:18, ID:2563657 |
狂頂!!狂頂!!狂頂!!狂頂!!狂頂!!狂頂!! 極度佩服hfghfghfg,天生hfghfghfg何生TYZhang,更不用說生我了!![:D] 實測如下: hfghfghfg的方法實在快的無話可說!!我的冒泡法運行的假死了... |
来自:hfghfghfg, 时间:2004-04-18 21:30, ID:2566539 |
to crystal: 多谢。 ps: 其实我发这贴就是觉得 很多人 一提到排序,就说快速排序。 根本不考虑 数据 适合什么样的 排序模式。 就本题来说。快速排序一点也不快。 |
来自:hfghfghfg, 时间:2004-04-16 18:24, ID:2563828 |
每种排序都是最好的,但是要在适合它的范围。 正如 一个好的统帅只会出现在适合他的战场上。 |
这篇关于那些年耍过的无赖的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!