unit Unit1;

 interface

 uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end; TMyRec = record
x: Integer;
y: Integer;
z: Integer;
end;
PMyRec = ^TMyRec; var
Form1: TForm1; implementation {$R *.dfm}
//function StringListCompareStrings(List: TStringList; Index1, Index2: Integer): Integer; function SortMethod(List: TStringList; Index1, Index2: Integer): Integer;
begin
if PMyRec(List.Objects[Index1])^.x > PMyRec(List.Objects[Index2])^.x then
Result := -
else
if PMyRec(List.Objects[Index1])^.x = PMyRec(List.Objects[Index2])^.x then
Result :=
else
Result := ;
end; procedure TForm1.Button1Click(Sender: TObject);
var
strList: TStringList;
mRec1, mRec2, mRec3: TMyRec;
pRec1, pRec2, pRec3: PMyRec;
begin
FillChar(mRec1, SizeOf(TMyRec), );
FillChar(mRec2, SizeOf(TMyRec), );
FillChar(mRec3, SizeOf(TMyRec), ); pRec1 := @mRec1;
pRec2 := @mRec2;
pRec3 := @mRec3; with mRec1 do
begin
x := ;
y := ;
z := ;
end; with mRec2 do
begin
x := ;
y := ;
z := ;
end; with mRec3 do
begin
x := ;
y := ;
z := ;
end; strList := TStringList.Create; strList.AddObject(IntToStr(pRec1^.x), TObject(pRec2));
strList.AddObject(IntToStr(pRec1^.x), TObject(pRec1));
strList.AddObject(IntToStr(pRec1^.x), TObject(pRec3)); ShowMessage( IntToStr( PMyRec(strList.Objects[])^.x ) //
+ IntToStr( PMyRec(strList.Objects[])^.x ) //
+ IntToStr( PMyRec(strList.Objects[])^.x ) //
); strList.CustomSort(SortMethod); ShowMessage( IntToStr( PMyRec(strList.Objects[])^.x ) //
+ IntToStr( PMyRec(strList.Objects[])^.x ) //
+ IntToStr( PMyRec(strList.Objects[])^.x ) //
); strList.Free; end; end.

unit Unit1;
interface
uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;
type  TForm1 = class(TForm)    Button1: TButton;    procedure Button1Click(Sender: TObject);  end;
    TMyRec = record    x: Integer;    y: Integer;    z: Integer;  end;  PMyRec = ^TMyRec;
var  Form1: TForm1;
implementation
{$R *.dfm}//function StringListCompareStrings(List: TStringList; Index1, Index2: Integer): Integer;
function SortMethod(List: TStringList; Index1, Index2: Integer): Integer;begin  if PMyRec(List.Objects[Index1])^.x > PMyRec(List.Objects[Index2])^.x then    Result := -1  else  if PMyRec(List.Objects[Index1])^.x = PMyRec(List.Objects[Index2])^.x then    Result := 0  else    Result := 1;end;
procedure TForm1.Button1Click(Sender: TObject);var  strList: TStringList;  mRec1, mRec2, mRec3: TMyRec;  pRec1, pRec2, pRec3: PMyRec;begin  FillChar(mRec1, SizeOf(TMyRec), 0);  FillChar(mRec2, SizeOf(TMyRec), 0);  FillChar(mRec3, SizeOf(TMyRec), 0);
  pRec1 := @mRec1;  pRec2 := @mRec2;  pRec3 := @mRec3;
  with mRec1 do  begin    x := 1;    y := 2;    z := 3;  end;
  with mRec2 do  begin    x := 3;    y := 2;    z := 3;  end;
  with mRec3 do  begin    x := 5;    y := 2;    z := 3;  end;
  strList := TStringList.Create;
  strList.AddObject(IntToStr(pRec1^.x), TObject(pRec2));       strList.AddObject(IntToStr(pRec1^.x), TObject(pRec1));       strList.AddObject(IntToStr(pRec1^.x), TObject(pRec3));
  ShowMessage( IntToStr(   PMyRec(strList.Objects[0])^.x )       //3  + IntToStr(   PMyRec(strList.Objects[1])^.x )                  //1  + IntToStr(   PMyRec(strList.Objects[2])^.x )                  //5  );
  strList.CustomSort(SortMethod);
  ShowMessage( IntToStr(   PMyRec(strList.Objects[0])^.x )       //5  + IntToStr(   PMyRec(strList.Objects[1])^.x )                  //3  + IntToStr(   PMyRec(strList.Objects[2])^.x )                  //1  );
  strList.Free;

end;
end.

StringList 自定义快速排序的更多相关文章

  1. Swift学习笔记(5)--数组

    数组的下标从0开始计数,相关方法属性涉及到下标时也从0开始计数 1.定义: //1.可变数组 var cityArray = ["Portland","San Franc ...

  2. Java8 新特性(一)- Lambda 表达式

    2014年3月18日发布了JavaSE 8 不追求技术的新,追求技术的稳定 本质:Lambda 表达式是一个匿名函数 作用:简化代码,增强代码的表达力 Lambda 语法格式 // 格式1:无参无返回 ...

  3. Java集合框架实现自定义排序

    Java集合框架针对不同的数据结构提供了多种排序的方法,虽然很多时候我们可以自己实现排序,比如数组等,但是灵活的使用JDK提供的排序方法,可以提高开发效率,而且通常JDK的实现要比自己造的轮子性能更优 ...

  4. Effective Java 第三版—— 87. 考虑使用自定义序列化形式

    Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...

  5. 基本的排序算法C++实现(插入排序,选择排序,冒泡排序,归并排序,快速排序,最大堆排序,希尔排序)

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/8529525.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  6. 快排 - 快速排序算法 (Chinar出品 简单易懂)

    Quicksort 快排的简单讲解 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  7. Hadoop mapreduce自定义排序WritableComparable

    本文发表于本人博客. 今天继续写练习题,上次对分区稍微理解了一下,那根据那个步骤分区.排序.分组.规约来的话,今天应该是要写个排序有关的例子了,那好现在就开始! 说到排序我们可以查看下hadoop源码 ...

  8. 算法分析中最常用的几种排序算法(插入排序、希尔排序、冒泡排序、选择排序、快速排序,归并排序)C 语言版

    每次开始动手写算法,都是先把插入排序,冒泡排序写一遍,十次有九次是重复的,所以这次下定决心,将所有常规的排序算法写了一遍,以便日后熟悉. 以下代码总用一个main函数和一个自定义的CommonFunc ...

  9. c# 自定义排序类(冒泡、选择、插入、希尔、快速、归并、堆排序等)

    using System; using System.Text; namespace HuaTong.General.Utility { /// <summary> /// 自定义排序类 ...

随机推荐

  1. SDOI HH的项链 HEOI采花

    题目大意: SDOI求一个区间内只出现一次的数的个数.多组询问. HEOI 求一个区间内出现至少两次的数的个数.多组询问. SDOI HH'neckplace如果每次询问都是1..r的话,那么我们只要 ...

  2. Spring AOP之异常转换

    Spring-AOP之异常转换 引子 最近项目遇到了一个问题,就是说业务层向展现层需要转换成统一个异常类,并抛出异常,但是由于业务层的异常类过多,所以导致业务异常转换代码充斥着异常转换的代码,本着程序 ...

  3. js页面加载进度条

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. HTML5简介、视频

    HTML5 建立的一些规则: 新特性应该基于 HTML.CSS.DOM 以及 JavaScript. 减少对外部插件的需求(比如 Flash) 更优秀的错误处理 更多取代脚本的标记 HTML5 应该独 ...

  5. struts.custom.i18n.resources国际化详解(一)

    每种框价都会有国际化的支持,struts2的国际化大致上分为页面的国际化,Action的国际化以及xml的国际化 首先在struts.properties文件中加入以下内容:struts.custom ...

  6. CC2530定时器3的输入捕获中断

    CC2530定时器3的输入捕获中断 使用的是tim3的通道1的输入捕获P1_7口.//GPIO配置成复用功能,同时设置P1_7为输入.void irCaptureGpioInit(void){ P1S ...

  7. C语言生产随机数的方法

    尽管在计算机中并没有一个真正的随机数发生器,但是可以做到使产生的数字的重复率很低,以至于它们看起来是随机的.实现这一功能的程序叫做伪随机数发生器. 有关如何产生随机数的理论有许多,这里不讨论这些理论及 ...

  8. spring的数据源基本配置

    aplictaionContext-dataSource的配置: <?xml version="1.0" encoding="utf-8"?> &l ...

  9. ng-repeat-start ng-repeat-end 的使用

    ng-repeat-start与ng-repeat-end时AngularJS(1.2.x)扩展的, 使用这两个指令可以灵活控制遍历形式. 例如: index.html <div class=& ...

  10. LeetCode_Recover Binary Search Tree

    Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...