zoukankan      html  css  js  c++  java
  • 数组的排序

     TAIntArray = array of Integer; //整型数组
    procedure SortIntArray(var InArray: TAIntArray); //对整型数组排序
    var
      lowi, highi: Integer; //数组快速排序
      procedure QuickSortArray(iLo, iHi: Integer);
      var
        Lo, Hi, Mid, value: Integer;
      begin
        Lo := iLo;
        Hi := iHi;
        Mid := InArray[(Lo + Hi) div 2];
        repeat
          while InArray[Lo] < Mid do
            Inc(Lo);
          while InArray[Hi] > Mid do
            Dec(Hi);
          if Lo <= Hi then begin
            value := InArray[Hi];
            InArray[Hi] := InArray[Lo];
            InArray[Lo] := value;
            Inc(Lo);
            Dec(Hi);
          end;
        until Lo > Hi;
        if Hi > iLo then
          QuickSortArray(iLo, Hi);
        if Lo < iHi then
          QuickSortArray(Lo, iHi);
      end;
    begin
      lowi := Low(InArray);
      highi := High(InArray);
      if highi > -1 then //不为空的数组
        QuickSortArray(lowi, highi);
    end;
    //结构体数组
    TRecordNode = record
        XXH: Integer;   
        Sort: Integer;
        Name:string;   
      end;
      TARecordNode = array of TRecordNode;

    procedure SortNode(var ARecordNode: TARecordNode);
    var
      lowi, highi: Integer; //数组快速排序
      procedure QuickSortArray(iLo, iHi: Integer);
      var
        Lo, Hi: Integer;
        SelectedNode: TRecordNode;
      begin
        Lo := iLo;
        Hi := iHi;
        SelectedNode := ARecordNode[(Lo + Hi) div 2];
        repeat
          while ARecordNode[Lo].Sort > SelectedNode.Sort do
            Inc(Lo);
          while ARecordNode[Hi].Sort < SelectedNode.Sort do
            Dec(Hi);
          if Lo <= Hi then begin
            SelectedNode := ARecordNode[Hi];
            ARecordNode[Hi] := ARecordNode[Lo];
            ARecordNode[Lo] := SelectedNode;
            Inc(Lo);
            Dec(Hi);
          end;
        until Lo > Hi;
        if Hi > iLo then
          QuickSortArray(iLo, Hi);
        if Lo < iHi then
          QuickSortArray(Lo, iHi);
      end;
    begin
      lowi := Low(ARecordNode);
      highi := High(ARecordNode);
      if highi > -1 then //不为空的数组
        QuickSortArray(lowi, highi);
    end;


  • 相关阅读:
    SkylineGlobe 如何实现绘制圆形Polygon和对图层的圆形范围选择查询
    如何修改Oracle服务IP地址
    TerraGate软件安装后,不能启动的解决办法
    SkylineGlobe SFS发布的WFS和WMS服务测试
    SkylineGlobe 如何实现二次开发加载KML文件
    如何屏蔽SkylineGlobe提供的三维地图控件上的快捷键
    SkylineGlobe 如何实现FlyTo定位到目标点之后触发的事件函数
    转子百度知道:LTE上行采用DC子载波,而下行置零,为什么?
    转载:LTE小区搜索过程
    dB dBc dBi dBd dBm dBW 定义
  • 原文地址:https://www.cnblogs.com/luckForever/p/7255303.html
Copyright © 2011-2022 走看看