当前位置:首页 > 芯闻号 > 充电吧
[导读]快速排序:冒泡排序的一种改进排序方法 基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小, 然后再按次方法对这两部分数据分别进行快速排序,整个排

快速排序:冒泡排序的一种改进排序方法

基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,

然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列 。

        “快速排序法”使用的是递归原理,下面我结合一个例子来说明“快速排序法”的原理。首先给出一个数组

{53,12,98,63,18,72,80,46, 32,21},先找到第一个数--53,把它作为中间值,也就是说,要把53放

在一个位置,使得它左边的值比它小,右边的值比它大。{21,12,32, 46,18,53,80,72,63,98},这样

一个数组的排序就变成了两个小数组的排序--53左边的数组和53右边的数组,而这两个数组继续用同样的方式

继续下去,一直到顺序完全正确。

结合理论知识整理下几种实现快速排序的算法,可以提供参考的,不足之处,还请多指教!

/*方法一:*/ 
int sort(int *array, int left, int right)
{
	int i, j, tmp;
	
	i=left;
	j=right;
	tmp = array[left];
	while(i=tmp)
		{
			j--;
		}
		if(i
/*方法二:*/ 
void QuickSort2(int *array, int min, int len)
{
	int i, j, tmp;
	
	i = min;
	j = len;
	if(i=tmp)
			{
				j--;
			}
			if(i
/*方法三*/ 
void QuickSort3(int *array, int min, int len)
{
	int i,j,tmp;
	
	if(min>len)
	{
		return;
	}
	i = min;
	j = len;
	while(i!=j)
	{
		tmp = array[i];
		while(itmp)
		{
			j--;
		}
		if(i
提供了测试程序代码,验证下是否正确。
#include
#include
#include

void PrintArray(int *array)
{
	int i;
	for(i=0; i<10; i++)
		printf("%d ", array[i]);
	printf("n");
}

int main(int argc, char **argv)
{
	int array[10]={7,2,4,1,3,8,9,6,5,0};
	PrintArray(array);
	
	//QuickSort1(array, 0, 10);
	//QuickSort2(array, 0, 10);
	QuickSort3(array, 0, 10);
	PrintArray(array); 
	return 0;
} 
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭