procedure qsort(L,R:longint); var i,j,mid,temp:longint; begin i:=L; j:=R; mid:=a[L+random(R-L+1)]; {随机选择一个数组中的数作为对比数} repeat while a[i]< mid do inc(i); {在左半部分寻找比中间数大的数} while mid< a[j] do dec(j); {在右半部分寻找比中间数小的数} if i< =j then {若找到一组与排序目标不一致的数对则交换它们} begin temp:=a[i]; a[i]):=a[j]; a[j]:=temp; inc(i);dec(j); {继续找} end; until i >j; if L< j then qsort(L,j); {若未到两个数的边界,则递归搜索左右区间} if i< R then qsort(i,R); end; //delphi/7187