那些年耍过的无赖

2023-12-02 02:52
文章标签 无赖

本文主要是介绍那些年耍过的无赖,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

事情的开始是这样的,有个网友在问:

题:求一个字符串排序的函数( 积分: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

每种排序都是最好的,但是要在适合它的范围。
正如 一个好的统帅只会出现在适合他的战场上。 

这篇关于那些年耍过的无赖的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/443681

相关文章

几乎能说服任何人的说服秘籍(无赖除外)

一、如何更好地说服他人? 在我们的工作和生活中,尤其是项目从业者说服他人的场景随处可见,说服他人采纳你的建议、说服他人理解你的行为、说服他人支持你的决定、说服他人和你一起行动...... 很多时候,我们总是习惯性地把自认为正确的观点,强加给别人,而没有去思考表达的方式和方法,甚至是得罪人了,还不自知,因为,我们总觉得,是“为你好”。 换位思考,设身处地思考下,你是如何被说服的,心服口服的