Pascal排序

基数排序;快速排序等。。。。。。
Pascal程序+范例+解说。。
急求。。
快。。

var a:array[0..1000000] of longint;//基数排序
i,n,x:longint;
begin
readln(n);//数据规模
for i:=1 to n do
begin
read(x);//读入x
inc(a[x]);//a[x]表示x的个数
end;
for i:=1 to 1000000 do
while a[i]>0 do//x的个数不为零,有多少个,就输出多少个
begin
write(i,' ');
dec(a[i]);//每输出一个,就-1
end;
end.

var a:array[0..100000] of longint;//快速排序
n,i:longint;
procedure sort(i1,j1:longint);
var i,j,n,s:longint;
begin
i:=i1;
j:=j1;
n:=a[(i+j) div 2];//找中间作比较的数(称为中介)
repeat
while a[i]<n do inc(i);//如果中介左边的数比中介小就不理,否则i指向该数
while a[j]>n do dec(j);/如果中介右边的数比中介大就不理,否则j指向该数
if i<=j then//将中介左边大的和中介右边小的交换
begin
s:=a[i];a[i]:=a[j];a[j]:=s;
inc(i);dec(j);
end;
until i>j;
if i<j1 then sort(i,j1);//递归中介的左边
if i1<j then sort(i1,j);//递归中介的右边
end;
begin
read(n);
for i:=1 to n do read(a[i]);
sort(1,n);
for i:=1 to n do writeln(a[i]);
end.
温馨提示:内容为网友见解,仅供参考
无其他回答

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位置...

相似回答
大家正在搜