⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mwtextsort.pas

📁 一个速度很快的文字排序引擎(TextSort engine)
💻 PAS
📖 第 1 页 / 共 3 页
字号:
                end;
            end;
        end
      else
        begin
          if MergeCompare(FFileThree.FLeft, FFileFour.FLeft) <= 0 then
            begin
              if MergeCompare(FFileTwo.FLeft, FFileThree.FLeft) <= 0 then
                begin
                  if MergeCompare(FFileTwo.FLeft, FFileFive.FLeft) <= 0 then
                    begin
                      writeln(fOutFile, FFileTwo.fLeft^.Data);
                      FFileTwo.Next;
                    end
                  else
                    begin
                      writeln(fOutFile, FFileFive.fLeft^.Data);
                      FFileFive.Next;
                    end;
                end
              else
                begin
                  if MergeCompare(FFileThree.FLeft, FFileFive.FLeft) <= 0 then
                    begin
                      writeln(fOutFile, FFileThree.fLeft^.Data);
                      FFileThree.Next;
                    end
                  else
                    begin
                      writeln(fOutFile, FFileFive.fLeft^.Data);
                      FFileFive.Next;
                    end;
                end
            end
          else
            begin
              if MergeCompare(FFileTwo.FLeft, FFileFour.FLeft) <= 0 then
                begin
                  if MergeCompare(FFileTwo.FLeft, FFileFive.FLeft) <= 0 then
                    begin
                      writeln(fOutFile, FFileTwo.fLeft^.Data);
                      FFileTwo.Next;
                    end
                  else
                    begin
                      writeln(fOutFile, FFileFive.fLeft^.Data);
                      FFileFive.Next;
                    end;
                end
              else
                begin
                  if MergeCompare(FFileFour.FLeft, FFileFive.FLeft) <= 0 then
                    begin
                      writeln(fOutFile, FFileFour.fLeft^.Data);
                      FFileFour.Next;
                    end
                  else
                    begin
                      writeln(fOutFile, FFileFive.fLeft^.Data);
                      FFileFive.Next;
                    end;
                end;
            end;
        end;
    end;

  while ( FFileOne.Full ) and ( FFileTwo.Full ) and ( FFileThree.Full ) and ( FFileFour.Full ) do
    begin
      if MergeCompare(FFileOne.FLeft, FFileTwo.FLeft) <= 0 then
        begin
          if MergeCompare(FFileThree.FLeft, FFileFour.FLeft) <= 0 then
            begin
              if MergeCompare(FFileOne.FLeft, FFileThree.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileOne.fLeft^.Data);
                  FFileOne.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileThree.fLeft^.Data);
                  FFileThree.Next;
                end;
            end
          else
            begin
              if MergeCompare(FFileOne.FLeft, FFileFour.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileOne.fLeft^.Data);
                  FFileOne.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileFour.fLeft^.Data);
                  FFileFour.Next;
                end;
            end;
        end
      else
        begin
          if MergeCompare(FFileThree.FLeft, FFileFour.FLeft) <= 0 then
            begin
              if MergeCompare(FFileTwo.FLeft, FFileThree.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileTwo.fLeft^.Data);
                  FFileTwo.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileThree.fLeft^.Data);
                  FFileThree.Next;
                end;
            end
          else
            begin
              if MergeCompare(FFileTwo.FLeft, FFileFour.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileTwo.fLeft^.Data);
                  FFileTwo.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileFour.fLeft^.Data);
                  FFileFour.Next;
                end;
            end;
        end;
    end;

  while ( FFileOne.Full ) and ( FFileTwo.Full ) and ( FFileThree.Full ) and ( FFileFive.Full ) do
    begin
      if MergeCompare(FFileOne.FLeft, FFileTwo.FLeft) <= 0 then
        begin
          if MergeCompare(FFileThree.FLeft, FFileFive.FLeft) <= 0 then
            begin
              if MergeCompare(FFileOne.FLeft, FFileThree.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileOne.fLeft^.Data);
                  FFileOne.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileThree.fLeft^.Data);
                  FFileThree.Next;
                end;
            end
          else
            begin
              if MergeCompare(FFileOne.FLeft, FFileFive.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileOne.fLeft^.Data);
                  FFileOne.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileFive.fLeft^.Data);
                  FFileFive.Next;
                end;
            end;
        end
      else
        begin
          if MergeCompare(FFileThree.FLeft, FFileFive.FLeft) <= 0 then
            begin
              if MergeCompare(FFileTwo.FLeft, FFileThree.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileTwo.fLeft^.Data);
                  FFileTwo.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileThree.fLeft^.Data);
                  FFileThree.Next;
                end;
            end
          else
            begin
              if MergeCompare(FFileTwo.FLeft, FFileFive.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileTwo.fLeft^.Data);
                  FFileTwo.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileFive.fLeft^.Data);
                  FFileFive.Next;
                end;
            end;
        end;
    end;

   while ( FFileOne.Full ) and ( FFileTwo.Full ) and ( FFileFour.Full ) and ( FFileFive.Full ) do
    begin
      if MergeCompare(FFileOne.FLeft, FFileTwo.FLeft) <= 0 then
        begin
          if MergeCompare(FFileFour.FLeft, FFileFive.FLeft) <= 0 then
            begin
              if MergeCompare(FFileOne.FLeft, FFileFour.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileOne.fLeft^.Data);
                  FFileOne.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileFour.fLeft^.Data);
                  FFileFour.Next;
                end;
            end
          else
            begin
              if MergeCompare(FFileOne.FLeft, FFileFive.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileOne.fLeft^.Data);
                  FFileOne.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileFive.fLeft^.Data);
                  FFileFive.Next;
                end;
            end;
        end
      else
        begin
          if MergeCompare(FFileFour.FLeft, FFileFive.FLeft) <= 0 then
            begin
              if MergeCompare(FFileTwo.FLeft, FFileFour.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileTwo.fLeft^.Data);
                  FFileTwo.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileFour.fLeft^.Data);
                  FFileFour.Next;
                end;
            end
          else
            begin
              if MergeCompare(FFileTwo.FLeft, FFileFive.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileTwo.fLeft^.Data);
                  FFileTwo.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileFive.fLeft^.Data);
                  FFileFive.Next;
                end;
            end;
        end;
    end;

   while ( FFileOne.Full ) and ( FFileThree.Full ) and ( FFileFour.Full ) and ( FFileFive.Full ) do
    begin
      if MergeCompare(FFileOne.FLeft, FFileThree.FLeft) <= 0 then
        begin
          if MergeCompare(FFileFour.FLeft, FFileFive.FLeft) <= 0 then
            begin
              if MergeCompare(FFileOne.FLeft, FFileFour.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileOne.fLeft^.Data);
                  FFileOne.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileFour.fLeft^.Data);
                  FFileFour.Next;
                end;
            end
          else
            begin
              if MergeCompare(FFileOne.FLeft, FFileFive.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileOne.fLeft^.Data);
                  FFileOne.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileFive.fLeft^.Data);
                  FFileFive.Next;
                end;
            end;
        end
      else
        begin
          if MergeCompare(FFileFour.FLeft, FFileFive.FLeft) <= 0 then
            begin
              if MergeCompare(FFileThree.FLeft, FFileFour.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileThree.fLeft^.Data);
                  FFileThree.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileFour.fLeft^.Data);
                  FFileFour.Next;
                end;
            end
          else
            begin
              if MergeCompare(FFileThree.FLeft, FFileFive.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileThree.fLeft^.Data);
                  FFileThree.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileFive.fLeft^.Data);
                  FFileFive.Next;
                end;
            end;
        end;
    end;

   while ( FFileTwo.Full ) and ( FFileThree.Full ) and ( FFileFour.Full ) and ( FFileFive.Full ) do
    begin
      if MergeCompare(FFileTwo.FLeft, FFileThree.FLeft) <= 0 then
        begin
          if MergeCompare(FFileFour.FLeft, FFileFive.FLeft) <= 0 then
            begin
              if MergeCompare(FFileTwo.FLeft, FFileFour.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileTwo.fLeft^.Data);
                  FFileTwo.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileFour.fLeft^.Data);
                  FFileFour.Next;
                end;
            end
          else
            begin
              if MergeCompare(FFileTwo.FLeft, FFileFive.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileTwo.fLeft^.Data);
                  FFileTwo.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileFive.fLeft^.Data);
                  FFileFive.Next;
                end;
            end;
        end
      else
        begin
          if MergeCompare(FFileFour.FLeft, FFileFive.FLeft) <= 0 then
            begin
              if MergeCompare(FFileThree.FLeft, FFileFour.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileThree.fLeft^.Data);
                  FFileThree.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileFour.fLeft^.Data);
                  FFileFour.Next;
                end;
            end
          else
            begin
              if MergeCompare(FFileThree.FLeft, FFileFive.FLeft) <= 0 then
                begin
                  writeln(fOutFile, FFileThree.fLeft^.Data);
                  FFileThree.Next;
                end
              else
                begin
                  writeln(fOutFile, FFileFive.fLeft^.Data);
                  FFileFive.Next;
                end;
            end;
        end;
    end;

  while ( FFileOne.Full ) and ( FFileTwo.Full ) and ( FFileThree.Full ) do
    begin
      if MergeCompare(FFileOne.FLeft, FFileTwo.FLeft) <= 0 then
        begin
          if MergeCompare(FFileOne.FLeft, FFileThree.FLeft) <= 0 then
            begin
              writeln(fOutFile, FFileOne.fLeft^.Data);
              FFileOne.Next;
            end
          else
            begin
              writeln(fOutFile, FFileThree.fLeft^.Data);
              FFileThree.Next;
            end;
        end
      else
        begin
          if MergeCompare(FFileTwo.FLeft, FFileThree.FLeft) <= 0 then
            begin
              writeln(fOutFile, FFileTwo.fLeft^.Data);
              FFileTwo.Next;
            end
          else
            begin
              writeln(fOutFile, FFileThree.fLeft^.Data);
              FFileThree.Next;
            end;
        end;
    end;

  while ( FFileOne.Full ) and ( FFileTwo.Full ) and ( FFileFour.Full ) do
    begin
      if MergeCompare(FFileOne.FLeft, FFileTwo.FLeft) <= 0 then
        begin
          if MergeCompare(FFileOne.FLeft, FFileFour.FLeft) <= 0 then
            begin
              writeln(fOutFile, FFileOne.fLeft^.Data);
              FFileOne.Next;
            end
          else
            begin
              writeln(fOutFile, FFileFour.fLeft^.Data);
              FFileFour.Next;
            end;
        end
      else
        begin
          if MergeCompare(FFileTwo.FLeft, FFileFour.FLeft) <= 0 then
            begin
              writeln(fOutFile, FFileTwo.fLeft^.Data);
              FFileTwo.Next;
            end
          else
            begin
              writeln(fOutFile, FFileFour.fLeft^.Data);
              FFileFour.Next;
            end;
        end;
    end;

  while ( FFileOne.Full ) and ( FFileTwo.Full ) and ( FFileFive.Full ) do
    begin
      if MergeCompare(FFileOne.FLeft, FFileTwo.FLeft) <= 0 then
        begin
          if MergeCompare(FFileOne.FLeft, FFileFive.FLeft) <= 0 then
            begin
              writeln(fOutFile, FFileOne.fLeft^.Data);
              FFileOne.Next;
            end
          else
            begin
              writeln(fOutFile, FFileFive.fLeft^.Data);
              FFileFive.Next;
            end;
        end
      else
        begin
          if MergeCompare(FFileTwo.FLeft, FFileFive.FLeft) <= 0 then
            begin
              writeln(fOutFile, FFileTwo.fLeft^.Data);
              FFileTwo.Next;
            end
          else
            begin
              writeln(fOutFile, FFileFive.fLeft^.Data);
              FFileFive.Next;
            end;
        end;
    end;

  while ( FFileOne.Full ) and ( FFileThree.Full ) and ( FFileFour.Full ) do
    begin
      if MergeCompare(FFileOne.FLeft, FFileThree.FLeft) <= 0 then
        begin
          if MergeCompare(FFileOne.FLeft, FFileFour.FLeft) <= 0 then
            begin
              writeln(fOutFile, FFileOne.fLeft^.Data);
              FFileOne.Next;
            end
          else
            begin
              writeln(fOutFile, FFileFour.fLeft^.Data);
              FFileFour.Next;
            end;
        end
      else
        begin
          if MergeCompare(FFileThree.FLeft, FFileFour.FLeft) <= 0 then
            begin
              writeln(fOutFile, FFileThree.fLeft^.Data);
              FFileThree.Next;
            end
          else
            begin
              writeln(fOutFile, FFileFour.fLeft^.Data);
              FFileFour.Next;
            end;
        end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -