排序--快速排序

来源:互联网 发布:淘宝口令红包怎么领 编辑:程序博客网 时间:2024/06/09 14:26

PS:自己MARK一下~


@思路

挖坑-填坑-换位


@原理

1.以数组中第一个为标志位,将大于他的都放在他后面,小于他的都放在他前面。

2.将小于他和大于他的部分分别作为子数组,再次重复1的步骤,直到排列有序



@代码

VOID QuickSort(INT* Sort, INT Begin, INT End){INTi, j, nTmp;if (Begin < End){i = Begin;j = End;nTmp = Sort[i];while(i < j){while(i < j && Sort[j] >= nTmp)j--;if (i < j){Sort[i] = Sort[j];i++;}while (i < j && Sort[i] <= nTmp) i++;if (i < j){Sort[j] = Sort[i];j--;}}Sort[j] = nTmp;QuickSort(Sort, Begin, i - 1);QuickSort(Sort, j + 1, End);}}

@代码备注

1.首先以i作为记录位置,然后从后向前找到小于标志位的数,放在i位置,i递增,然后用j做标志位

2.再用j作为记录位置,从前向后找大于标志位的数,放在j位置,j递减,然后再执行1

3.直到i j相等为止。



0 0
原创粉丝点击