1.冒泡排序

Delphi/Pascal code

 

?

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+1then
      begin
        intTmp:=x[j];
        x[j]:=x[j+1];
        x[j+1]:=intTmp;
      end;
    end;
  end;
end;

2.选择排序

Delphi/Pascal code

 

?

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.插入排序

Delphi/Pascal code

 

?

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.希尔排序

Delphi/Pascal code

 

?

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.快速排序

Delphi/Pascal code

 

?

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.归并排序

Delphi/Pascal code

 

?

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.堆排序

Delphi/Pascal code

 

?

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;
 
参考:http://m.blog.csdn.net/blog/fghydx/46401781

Delphi常用排序的更多相关文章

  1. Delphi常用字符串函数

    Delphi常用字符串函数   一.字符转换函数1.ord(input[i])返回字符表达式 input 左端起第 I 字符的ASCII 码值.2.CHAR()将ASCII 码转换为字符.如果没有输入 ...

  2. Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...

  3. Delphi常用系统函数总结

    Delphi常用系统函数总结 字符串处理函数 Unit System 函数原型 function Concat(s1 [, s2,..., sn]: string): string; 说明 与 S : ...

  4. 转载部长一篇大作:常用排序算法之JavaScript实现

    转载部长一篇大作:常用排序算法之JavaScript实现 注:本文是转载实验室同门王部长的大作,找实习找工作在即,本文颇有用处!原文出处:http://www.cnblogs.com/ywang172 ...

  5. Java 常用排序算法/程序员必须掌握的 8大排序算法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...

  6. (转载)delphi 常用函数(数学)

    delphi 常用函数(数学) Delphi中怎么将实数取整? floor 和 ceil 是 math unit 里的函数,使用前要先 Uses Math.trunc 和 round 是 system ...

  7. 常用排序算法的python实现和性能分析

    常用排序算法的python实现和性能分析 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试 ...

  8. Delphi 常用函数(数学函数)round、trunc、ceil和floor

    源:Delphi 常用函数(数学函数)round.trunc.ceil和floor Delphi 常用函数(数学) Delphi中怎么将实数取整? floor 和 ceil 是 math unit 里 ...

  9. Delphi 常用API 函数

    Delphi 常用API 函数 AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 AnyPopup 判断屏幕上是否存在任何弹出式窗口 ArrangeIconic ...

随机推荐

  1. CentOS 更新yum源

    公司买了一台刀片机服务器,安装的系统版本太低,导致yum源不合适,安装就会报错. 在网上找了好长时间,才发现是yum源的问题.   转载原文: 突然想起试试 Docker,在一台计算机上安装了 Cen ...

  2. Linux重复执行上一条命令

    执行刚刚执行的一条命令: !! 执行最近一个以指定字符串开头的命令(比如man) !man !m 引用上一个命令的最后一个参数 !$ <ESC>, .

  3. 多目标遗传算法 ------ NSGA-II (部分源码解析) 快速排序代码 sort.c

    /* Routines for randomized recursive quick-sort */ # include <stdio.h> # include <stdlib.h& ...

  4. [时间操作] C#TimeHelper时间格式化帮助类 (转载)

    点击下载 TimeHelper.rar 主要功能如下 .将时间格式化成 年月日 的形式,如果时间为null,返回当前系统时间 .将时间格式化成 时分秒 的形式,如果时间为null,返回当前系统时间 . ...

  5. [功能帮助类] 最新的Functions 类 (转载)

    代码 using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptogr ...

  6. A题笔记(4)

    No. 1384 这题没啥 不过网考成绩出了,发现我的口语分数相较其他人还挺高的~~~哈哈哈 Code::Blocks 有时在程序运行结束后,.exe 并没有结束,因而之后无论怎么调试和修改代码,运行 ...

  7. windows下安装wamp和wordpress

    安装wamp WAMP是一个windows上的php开发集成环境,一键安装php,apache和mysql,非常方便. 双击wampserver2.2exxxxxxxxxx.exe文件进行安装,安装过 ...

  8. 如何把visual studio 2010的工程文件迁入TFS2010中管理

    如何在VS2010里面创建项目并添加到TFS2010里面. 新建一个项目,并把它添加到TFS,我们会收到下面的错误: 这是因为我们没有为项目创建Team project,而把它直接添加到了Team p ...

  9. 设置UILabel可变高度(根据文本内容自动适应高度)

    @property(nonatomic)UILabel *showLabel;   // 计算文本所占高度,计算出来之后设置label的高度 // 第一个参数:字体大小,字体大小/样式影响计算字体的高 ...

  10. XMPPFramework ios 例子中链接服务器失败,opnefire 服务器链接失败

    首先说下上周又做了几天得无用功, 之前一直用的是ejabberd ,这次换了opnefire,有人说opnefire跟新的xmpp协议不兼容,后来又更换成了ejabberd, Github 上得dem ...