PASCAL的排序法

把所有的排序法都写出来
像冒泡,插入等排序法 在小学里学的4种排序法
要写清楚是什么排序法
要程序,写完整

在一个程序中,如果所要用到的常量、变量不多,并且彼此之间无序列化的联系,我们一般定义成不同的常/变量名即可。但如果要用到的常/变量个数很多,彼此之间有着序列化的联系时,我们就会把它们定义成一个数组。数组—即一序列的数(各种类型的数据)组成的一个数据的序列。这些数据共用一个名称,只不过下标不同。
例如:在我们的数学学习中,在解一元二次方程时,方程有两个解,我们会分别用X1、X2来表示。而在PASCAL语言中,我们用X[1]、X[2]来表示,即下标是放在中括号中的。

一、一维数组
数组如果要使用的话,就必须先在程序头部的常量/变量说明中先说明,说明语法是:
变量名:ARRAY[下标初值..下标终值] OF 数据类型;
如:VAR N:ARRAY[1..10] OF INTEGER;
作用是说明一个名为N的整数型数组,可用的下标为1至10,即可用10个变量。
再如:CONST M:ARRAY[1..5] OF CHAR=(‘A’,‘B’,‘C’,‘D’,‘E’);
作用是说明了一个名为M的字符型数组常量,下标范围为1至5,因为是常量,所以在后面指明了这五个常量的值分别为:‘A’,‘B’,‘C’,‘D’,‘E’。
在程序头部说明了数组后,在程序中就可以使用了,使用方法为:常/变量名[下标号]。如,M[1]即调用M[1]这个常量,其值为‘A’。
[例6、1]从键盘输入10个整数,然后把它们排序,从大到小打印出来。
分析:排序是各种语言中的一个必需掌握的要点。排序有很多种方法,但不论是哪种方法,都是把这些据存放在一个数组中,然后再对其进行排序操作。排序一般有以下几种方法:
1、 双数组法:再定义另一个与存放数据数组同类型的数组,然后把数据数组中最大的一个数找出来,存放为另一数组中的第一个;再找第二、第三个等等。其中的细节问题就是:在数据数组中找到最大的一个后,就把它的值赋成一个非常小的值,然后再找最大的一个,这样就能顺序把数据从大到小存放到另一个数组中,也即排好了序。
2、 冒泡法:这是最常用的一种排序方法,其实质是:先把数据存放在数组中,然后从第一个开始,分别与其后所有数据进行比较,如果第一个比其后某个数据小,则交换它们的值,一直到第一个与其后所有数据比较完,这时第一个数据就是最大的一个;然后再把第二个数据再与其后数据进行比较,比较完后,第二个数据则为第二大的,这样直到倒数第二个数据比较完后,整个数组就已经按从大到小的顺序排列了。其作用示意如下:
假设我们已经把6个数据分别存放在N[1]至N[6]中,其值分别为:3,1,5,9,2,6。
交换前的值为: 3,1,5,9,2,6
第一步,把第一个值与其后第一个进行比较,这时3>1,所以值不变: 3,1,5,9,2,6
第二步:把第一个值与其后第二个进行比较,这时3<5,所以值交换: 5,1,3,9,2,6
第三步:把第一个值与其后第三个进行比较,这时5<9,所以值交换: 9,1,3,5,2,6
…… ……
当第一个值与其后所有值比较完后,第一个值已经是最大的,数组值为: 9,1,3,5,2,6
这时,重复上述第一步的操作,只是把第一个值换成第二个值,第一个值即第二个值与其后第一个值进行比较,这时1<3,所以交换其值: 9,3,1,5,2,6
第二个值与其后所有值比较完后,数组值为: 9,6,1,3,2,5
再重复进行第三个值与其后值的比较,直到第五个值与第六个值比较完后,这时数组的值已经变为: 9,6,5,3,2,1
至此,数组已经按从大到小的顺序排好了。
程序如下 :[例6、1]
Var n:array[1..10] of integer;
I,j,t:integer;
Begin
For I:=1 to 10 do Readln(n[I]);
For I:=1 to 9 do begin
For j:=I+1 to 10 do begin
If n[I]<n[j] then begin
T:=n[I];
N[I]:=n[j];
N[j]:=t;
End;
End;
End;
For I:=1 to 10 do begin
Write(n[I]:5);
End;
End.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-03-20
O(n^2)的:
选择排序
插入排序
冒泡排序
-------------
这个时间复杂度忘了...貌似是O(n^1.3)
Shell排序
-------------
时间复杂度O(nlgn)
归并排序
快速排序
-------------
堆排序
平衡二叉树排序
-------------
计数排序
基数排序
桶排序

代码的话.........................懒得写了............其实都应该是能搜索到的.......................