Delphi常用排序
1.冒泡排序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
procedure BubbleSort( var x: array of integer ); var i,j,intTmp: integer ; begin for i:= 0 to high(x) do begin for j:= 0 to high(x)- 1 do begin if x[j]>x[j+ 1 ] then begin intTmp:=x[j]; x[j]:=x[j+ 1 ]; x[j+ 1 ]:=intTmp; end ; end ; end ; end ; |
2.选择排序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
procedure SelectSort( var x: array of integer ); var i,j,k,intTmp: integer ; begin for i:= 0 to high(x)- 1 do begin intTmp:=x[i]; k:=i; for j:=i+ 1 to high(x) do begin if intTmp>x[j] then begin k:=j; intTmp:=x[k]; end ; end ; if k<>i then begin x[k]:=x[i]; x[i]:=intTmp; end ; end ; end ; |
3.插入排序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
procedure InsertSort( var x: array of integer ); var i,j,intTmp: integer ; begin for i:= 1 to high(x) do begin for j:=i downto 1 do begin if x[j- 1 ]>x[j] then begin intTmp:=x[j- 1 ]; x[j- 1 ]:=x[j]; x[j]:=intTmp; end ; end ; end ; end ; |
4.希尔排序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
procedure ShellSort( var x: array of integer ); var h,i,j,intTmp: integer ; begin h:=high(x) div 2 ; while h> 0 do begin for i:=h to high(x) do begin j:=i; while (j>=h) and (x[j-h]>x[j]) do begin intTmp:=x[j-h]; x[j-h]:=x[j]; x[j]:=intTmp; j:=j-h; end ; end ; h:=h div 2 ; end ; end ; |
5.快速排序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
procedure QuickSort( var x: array of integer ; L,R: integer ); var i,j,intTmp: integer ; begin if L<R then begin i:=L; j:=R; intTmp:=x[i]; while i<j do begin while (i<j) and (x[j]>=intTmp) do begin j:=j- 1 ; end ; if i<j then x[i]:=x[j]; while (i<j) and (x[i]<=intTmp) do begin i:=i+ 1 ; end ; if i<j then x[j]:=x[i]; end ; x[i]:=intTmp; QuickSort(x,L,i- 1 ); QuickSort(x,i+ 1 ,R); end ; end ; |
6.归并排序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
procedure Merge( var x,y: array of integer ; L,M,R: integer ); var i,j: integer ; begin i:=L; j:=M+ 1 ; while (L<=M) and (j<=R) do begin if x[L]> x[j] then begin y[i]:=x[j]; j:=j+ 1 ; end else begin y[i]:=x[L]; L:=L+ 1 ; end ; i:=i+ 1 ; end ; while L<=M do begin y[i]:=x[L]; i:=i+ 1 ; L:=L+ 1 ; end ; while j<=R do begin y[i]:=x[j]; i:=i+ 1 ; j:=j+ 1 ; end ; end ; procedure MergeSort( var x, y:TArrInt); var intLength,intLen,intLen_m,i: integer ; tmp:TArrInt; begin intLength:=high(x)+ 1 ; intLen:= 1 ; while intLen<intLength do begin intLen_m:=intLen; intLen:=intLen* 2 ; i:= 0 ; while i+intLen<intLength do begin Merge(x,y,i,i+intLen_m- 1 ,i+intLen- 1 ); i:=i+intLen; end ; if i+intLen_m<intLength then begin Merge(x,y,i,i+intLen_m- 1 ,intLength- 1 ); end ; tmp:=x; x:=y; y:=tmp; end ; end ; |
7.堆排序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
procedure HeapAdjust( var x: array of integer ; i,intLen: integer ); var intTmp,intChild: integer ; begin intTmp:=x[i]; intChild:= 2 *i+ 1 ; while intChild<intLen do begin if (intChild+ 1 <intLen) and (x[intChild]<x[intChild+ 1 ]) then begin intChild:=intChild+ 1 ; end ; if x[i]<x[intChild] then begin x[i]:=x[intChild]; i:=intChild; intChild:= 2 *i+ 1 ; end else begin break; end ; x[i]:=intTmp; end ; end ; procedure BuildHeap( var x: array of integer ); var i: integer ; begin for i:=high(x) div 2 downto 0 do begin HeapAdjust(x,i,High(x)+ 1 ); end ; end ; procedure HeapSort( var x: array of integer ); var i,intTmp: integer ; begin BuildHeap(x); for i:=high(x) downto 0 do begin intTmp:=x[i]; x[i]:=x[ 0 ]; x[ 0 ]:=intTmp; HeapAdjust(x, 0 ,i); end ; end ; |
Delphi常用排序的更多相关文章
- Delphi常用字符串函数
Delphi常用字符串函数 一.字符转换函数1.ord(input[i])返回字符表达式 input 左端起第 I 字符的ASCII 码值.2.CHAR()将ASCII 码转换为字符.如果没有输入 ...
- Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法
Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...
- Delphi常用系统函数总结
Delphi常用系统函数总结 字符串处理函数 Unit System 函数原型 function Concat(s1 [, s2,..., sn]: string): string; 说明 与 S : ...
- 转载部长一篇大作:常用排序算法之JavaScript实现
转载部长一篇大作:常用排序算法之JavaScript实现 注:本文是转载实验室同门王部长的大作,找实习找工作在即,本文颇有用处!原文出处:http://www.cnblogs.com/ywang172 ...
- Java 常用排序算法/程序员必须掌握的 8大排序算法
Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...
- (转载)delphi 常用函数(数学)
delphi 常用函数(数学) Delphi中怎么将实数取整? floor 和 ceil 是 math unit 里的函数,使用前要先 Uses Math.trunc 和 round 是 system ...
- 常用排序算法的python实现和性能分析
常用排序算法的python实现和性能分析 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试 ...
- Delphi 常用函数(数学函数)round、trunc、ceil和floor
源:Delphi 常用函数(数学函数)round.trunc.ceil和floor Delphi 常用函数(数学) Delphi中怎么将实数取整? floor 和 ceil 是 math unit 里 ...
- Delphi 常用API 函数
Delphi 常用API 函数 AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 AnyPopup 判断屏幕上是否存在任何弹出式窗口 ArrangeIconic ...
随机推荐
- GDI 对象的释放与内存泄漏的问题研究
最近写了一个GDI 绘图的程序,过程中遇到一个奇怪的问题,就是 定时器定时一会GDI绘的图就消失了..后来经过分析,原来是 GDI对象数量过多 ,即GDI对象超过10000个 导致内存泄漏的问题.找到 ...
- Linux下搭建Oracle11g RAC(1)----IP分配与配置IP
首先需要说明的,我的RAC搭建不是在虚拟机上完成的,而是在实际部署中,二者之间有些许差异,本人水平有限,请见谅. 其中,每台机器至少需要配置3个IP地址,在安装操作系统的过程中,我们需要配置公网IP和 ...
- Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群
Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群 >>>>>>>>>>>> ...
- PHP 基础语法 常量 变量
PHP基础语法 标记 当解析一个文件时,PHP 会寻找起始和结束标记,也就是 <?php 和 ?>,这告诉 PHP 开始和停止解析二者之间的代码.此种解析方式使得 PHP 可以被嵌入到各种 ...
- CI框架篇之模型篇--初识(1)
模型 模型是专门用来和数据库打交道的PHP类.例如,假设你想用CodeIgniter来做一个Blog. 你可以写一个模型类,里面包含插入.更新.删除Blog数据的方法. 下面的例子将向你展示一个普通的 ...
- C#语法糖之第二篇: 参数默认值和命名参数 对象初始化器与集合初始化器
今天继续写上一篇文章C#4.0语法糖之第二篇,在开始今天的文章之前感谢各位园友的支持,通过昨天写的文章,今天有很多园友们也提出了文章中的一些不足,再次感谢这些关心我的园友,在以后些文章的过程中不断的完 ...
- MVC中HttpContext, HttpContextBase, HttpContextWrapper联系
HttpContext // // 摘要: // 封装有关个别 HTTP 请求的所有 HTTP 特定的信息. public sealed class HttpContext : IServicePro ...
- 解决 TortoiseGit 诡异的 Bad file number 问题
http://blog.csdn.net/renfufei/article/details/41648061 问题描述 昨天,以及今天(2014-11-29),使用 TortoiseGit 时碰到了一 ...
- JS关闭窗口或JS关闭页面的几种代码
//JS定时自动关闭窗口 <script language="javascript"> <!-- function closewin(){ self.opener ...
- VS2010对Excel操作---DLL向
最近公司有个项目要用到Excel的操作,于是自己就对VC中关于Excel的操作进行整理了下.而这里我是直接做成DLL方便他人调用的. 创建一个MFC Dll项目. 选择MFC扩展DLL. 在“类视图” ...