快排代码 《数据结构》

#include 

/* C:
 * 参照《数据结构》(C语言版)
 * 调用:quicksort-->qsort-->partitions
 * 原理,通过一趟扫描将要排序的数据分割成独立的两部分,
 * 其中一部分的所有数据都比另外一部分的所有数据都要小,
 * 然后再按此方法对这两部分数据分别进行快速排序,
 * 整个排序过程可以递归进行,以此达到整个数据变成有序序列
 */

/* 
 * arry : 待排数组
 */
int partitions(int arry[],int low,int high)
{
	int pivotkey=arry[low];//枢纽数,以a[low]为
	
	while(low < high)
	{
		while(low < high && arry[high] >= pivotkey) --high;//先high前移直到小于枢纽		
		arry[low]=arry[high];
		
		while(low < high && arry[low] <= pivotkey) ++low;//low后移直到大于枢纽
		arry[high]=arry[low];
	}
	//arry[low] = arry[0];
	
	arry[low]=pivotkey;
	return low;
}

void qsort(int arry[],int low,int high)
{
	int pivottag;
	
	if(low


你可能感兴趣的:(快排代码 《数据结构》)