快速排序
来源:互联网 发布:dnf机械爆炸优化补丁 编辑:程序博客网 时间:2024/04/30 01:30
void QuickSort(int a[],int st,int stp)//void QuckSort(int *st,int len)也可以写成这样 { int mid;mid=prtition(a[],st,stp)//标记元素位置if(l<mid-1)QuickSort (a[],mid+1,stp);//递归调用if(mid+1>r)QuickSort (a[],mid+1,stp); } void QuickSort(long a[]),long st,long stp) { long t,n,l,r n=a[st]; l=st+1 r=stp; for(;;) { for(;a[l]<=n&&l<=stp;l++) //从右找,找到一个小于标记元素的数 for(;a[r]>=n&&r>=st;r--)//从左找一个大于标记元素的数 if(l>=r)break;//如果l在r右侧,则跳出 t=a[l];a[l]=a[r];a[r]=t //交换使小于标记元素的在左,大于标记元素的在右 } a[st]=a[r]//取出右侧小于标记元素的数写入空缺 a[r]=n//空缺放入标记元素 if(r-st>1)QuickSort ( a,st,stp-1);//递归调用 if(stp>1)QuickSort (a,st+1,stp); }