=x;РРР i:=i+1;j:=j-1;Р if s<j then quicksort(b,s,j);Р if i<t then quicksort(b,i,t);Р end;РbeginРwrite('input data:');Рfor i:=1 to n do read(a[i]);Рwriteln;Рquicksort(a,1,n);Рwrite('output data:');Рfor i:=1 to n do write(a[i]:6);Рwriteln;Рend.Р返回Р4.3希尔排序 Р基本思想:将整个无序序列分割成若干小的子序列分别进行插入排序或冒泡排序。Р序列分割方法:将相隔某个增量h的元素构成一个子序列。在排序过程中,逐次减小这个增量,最后当h减到1时,进行一次插入排序或冒泡排序,排序就完成。增量序列一般采用:d1=n div 2 ,di=di-1 div 2 ;i=2,3,4.....其中n为待排序序列的长度。Р程序1:(子序列是插入排序)Рprogram xepx;Рconst n=7;РtypeРarr=array[1..n] of integer;РvarРa:arr;Рi,j,t,d:integer;Рbool:boolean;РbeginРwrite('input data:');Рfor i:=1 to n do read(a[i]);Рwriteln;Рd:=n;Рwhile d>1 doР beginР d:=d div 2;Р for j:=d+1 to n doР beginР t:=a[j];i:=j-d;Р while (i>0) and (a[i]>t) doР begin a[i+d]:=a[i];i:=i-d;end;Р a[i+d]:=t;Р end;Р end;