procedure qsort(l, r: Integer); var i, j, mid: Integer; begin i := l; j := r; mid := a[(l + r) div 2]; {将当前序列在中间位置的数定义为中间数}repeatwhile a[i] < mid do Inc(i); {在左半部分寻找比中间数大的数}while a[j] > mid do Dec(j);{在右半部分寻找比中间数小的数}if i <= j then begin {若找到一组与排序目标不一致的数对则交换它们}Swap(a[i], a[j]); Inc(i); Dec(j); {继续找} end; until i > j; if l < j then qsort(l, j); {若未到两个数的边界,则递归搜索左右区间}if i < r then qsort(i, r); end;{sort} //delphi/6609