PASCAL 排序

怎样用PASCAL对任意一组实数(用户输入)排序
我说的是实数(REAL)排序, 不是整数(INTEGER)排序, 而且对数值和一组多少数都没有限制

第1个回答  2009-02-07
现在一般用两种排序
一种为‘冒泡排序’
一种为‘快速排序’
冒泡适用于排序量较少,快排用于大于1000个数的排序
冒泡:
program dd
var
a:arrray[0..10000] of integer;
i,j,k,n:integer;
begin
randomize;
readln(n);
for i:=1 to n begin
a[i]:=random(1000);
write(a[i]:4);
end;
for i:=1 to n-1 do
for j:=1 to n-i do
if a[j]>a[j+1] then begin
a[0]:=a[j];
a[j]:=a[j+1];
a[j+1]:=a[0];
end;
writeln;
for i:=1 to n do
write(a[i]:4);
end.
快速排序:
program dd;
var
i,j,k,l,m,n:integer;
a:array[0..10000] of integer;
procedure pai(l,r:integer);
var
i,j,k:Integer;
begin
k:=a[l];
i:=l;
j:=r;
while i<j do begin
while (a[j]>=l) and (i<j) do
j:=j-1;
a[i]:=a[j];
while (a[i]<=l) and (i<j) do
i:=i+1;
a[j]:=a[i];
end;
a[i]:=k;
if i-1>l then pai (l,i-1);
if i+1<r then pai (i+1,r);
end;
begin
randomize;
readln(n);
for i:=1 to n do begin
a[i]:=random(100);
write(a[i]:4);
end;
pai(1,n);
writeln;
for i:=1 to n do
write(a[i]:4);
end.
第2个回答  2009-02-07
有多种排序方法。
用得比较多的而且比较快的就是快速排序。
这里是快排的过程(a是要排序的数组):
proceduer kp(l,r:integer);
var c,d,e,f:integer;
begin
c:=l;d:=r;e:=a[(l+r) div 2];
repeat
while a[c]<e do inc(c);
while a[d]>e do dec(d);
if c<=d then begin
f:=a[c];a[c]:=a[d];a[d]:=f;
inc(c);
dec(d);
end;
until c>d;
if c<r then kp(c,r);
if l<d then kp(l,d);
end;
第3个回答  2009-02-07
简单的选择排序;
program selectsort;
var a:array[1..100]of longint;
i,j,n,temp:longint;
begin
readln(n);
for i:=1 to n do read(a[i]);
for i:=1 to n do
for j:=i to n do
if a[i]>a[j] then begin
temp:=a[i];
a[i]:=a[j];
a[j]:=temp;
end;
for i:=1 to n do write(a[i],' ');
end.本回答被网友采纳
第4个回答  2009-02-07
我也是刚学,给你个思路把
var
i,j:integer;
a:array[1..100]of integer;(最多100个数)
begin
readln(i);(输入有几个数)
for i:=1 to i do
readln(a[i]);
之后的就是排序了~~我也不怎么懂的说..
第5个回答  2009-02-14
keyi用快排

pascal 全排列顺序是什么?
从最末位(3)开始向前(左)找,找到第一个比末位数字小的数字(2),把末位数字(3)提到第一个比末位数字小的数字(2)前面,(形成13254),再将原末位数字右边的数字从小到大排列(将“254”排序,整体改为“13245”)。这样子执行m次就可以了,复杂度很小 ...

pascal 简单的排序
选择排序:for i:=1 to n-1 do for j:=i+1 to n do if a[i]<a[j] then begin b:=a[i];a[i]:=a[j];a[j]:=b;end;冒泡排序:for i:=2 to n do for j:=i-1 downto 1 do if a[i]mid do inc(i);while a[j]<mid do dec(j);if j>...

PASCAL的排序法
2、 冒泡法:这是最常用的一种排序方法,其实质是:先把数据存放在数组中,然后从第一个开始,分别与其后所有数据进行比较,如果第一个比其后某个数据小,则交换它们的值,一直到第一个与其后所有数据比较完,这时第一个数据就是最大的一个;然后再把第二个数据再与其后数据进行比较,比较完后,第...

选择排序Pascal
在Pascal语言中,选择排序算法被定义在一个名为ssort的子程序中,它接受一个整数数组作为输入。该算法的主要步骤如下:首先,从数组的最后一个元素开始,进行n-1轮迭代(n为数组长度)。在每轮中,程序会找到剩余元素中的最大值,将其与当前未排序部分的首个元素交换位置。这一步通过内部嵌套循环实现...

PASCAL拓扑排序~~
拓扑排序是图论的基本算法之一;做一件事情,比如盖新房子,会分成很多工作:买地,买砖,打桩,砌砖,粉刷,放家具...但是这些工作是有一定顺序的,比如说不可能砖都没砌好就开始粉刷,盖房必须在买地买砖都完成后才能开始..所以对于一件事我们总要确定工作顺序,确定这个顺序的过程就是拓扑排序。算法...

从小到大排序pascal
1. 冒泡排序(稳定排序)vara:array[1..10] of integer;n,i,j,t:integer;beginreadln(n);for i:=1 to n doread(a[i]);for i:=1 to n-1 dofor j:=n-1 downto i doif a[j]>a[j+1] then begint:=a[j];a[j]:=a[j+1];a[j+1]:=t;end;for i:=1 to n do ...

Pascal中, 稳定排序是什么意思? 不稳定排序又是什么意思?
稳定排序就是开始时在前面的数在排序时一直在前边,如冒泡、插入、归并等。不稳定排序就是开始时在前面的数在排序时不一定在前边,如选择、快速、基数等。

PASCAL 排序
一种为‘冒泡排序’一种为‘快速排序’冒泡适用于排序量较少,快排用于大于1000个数的排序 冒泡:program dd var a:arrray[0..10000] of integer;i,j,k,n:integer;begin randomize;readln(n);for i:=1 to n begin a[i]:=random(1000);write(a[i]:4);end;for i:=1 to n-1 do fo...

pascal各种排序比较
必须 快排最快(出去计数等排序,那太玩赖了)毕竟是(NlogN)的算法,1000000个数用时1.2秒左右 冒泡。。。似乎这个数据量要用4个小时吧。

pascal 快速排序
五、快速排序(由小到大)思想:(中级本P230举例排序过程)设I为当前表头指针,J为当前表的尾指针,X为当前表的第一个元素,首先从当表前的最后J位置向前找到一个比X小的元素,此时将找到的小数放到当前表第一元素位置,I指针下移并向后找一个元素比X大的元素,此时将找到的大数放到当前表的J位置...

相似回答
大家正在搜