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 ...
随机推荐
- iOS UIKit:TableView之单元格配置(2)
Table View是UITableView类的实例对象,其是使用节(section)来描述信息的一种滚动列表.但与普通的表格不同,tableView只有一行,且只能在垂直方向进行滚动.tableVi ...
- grunt 构建工具(build tool)初体验
操作环境:win8 系统,建议使用 git bash (window下的命令行工具) 1,安装node.js 官网下载:https://nodejs.org/ 直接点击install ,会根据你的操 ...
- 功能点分析法FPA笔记
转载请注明出处:http://www.cnblogs.com/lidabnu/p/5700412.html 主要参考资料来自百度文库:http://wenku.baidu.com/link?url=y ...
- js EasyUI前台 价格=数量*单价联动的实现
废话,不多说,,效果图如下:
- asp.net mvc5 设置Area下的为启动页
只需修改App_Start文件夹下RouteConfig中RegisterRoutes方法 public static void RegisterRoutes(RouteCollection rout ...
- IOS-UI- UIScrollView 滚动视图(1)
滚动视图多个页面实现的原理 滚动视图位置不变 内容的位置发生改变. 滚动视图的运用1.分页查看图片 2.查看大图片 3.当内容过多需要一个页面显示,如:注册,修改个人信息等等4.当不希望用户感觉咱们的 ...
- 自己学习过程中关于以后有可能用到的技术的备份,微信广告滑屏组件 iSlider
转载: iSlider 是个非常平滑的滑块,支持移动端 WebApp,HTML5App 和混合型的 App. iSlider是移动端的滑动组件的最佳解决方案.他和普通的web 端的滑动插件有很大不同, ...
- 菜鸟日记之JSP二 内置对象的理解
·最近学习JSP了,对编程和网络又有了一些理解.无论是现实中人与人的交流,还是网络世界的接触,都是在相互表达自己的意思让别人知道,并理解对方的信息.然后我们知道的事情不断的变多,会又交杂出新的内容,不 ...
- Codeforces 553D Nudist Beach(图论,贪心)
Solution: 假设已经选了所有的点. 如果从中删掉一个点,那么其它所有点的分值只可能减少或者不变. 如果要使若干步删除后最小的分值变大,那么删掉的点集中肯定要包含当前分值最小的点. 所以每次删掉 ...
- gpfdist工具的初级使用
gpfdist工具的使用主要两步: 第一步:打开gpfdist服务: gpfdist -d /home/admin -p -l /tmp/gpfdist.log & 参数解释: -d 数据文件 ...