详细说明一个快速排序的例子

关于快速排序的逻辑原理是这样的:

将两个指针i,j分别指向表的起始和最后的位置,T为临时变量。

反复操作以下两步:

(1)j逐渐减小,并逐次比较j指向的元素和目标元素的大小,若p(j)<T则交换位置。

(2)i逐渐增大,并逐次比较i指向的元素和目标元素的大小,若p(i)>T则交换位置。

直到i,j指向同一个值,循环结束。

下面是源码

#include <stdio.h>
#include <stdlib.h>

void swap(int A[],int i,int j)
{
	int temp=0;
	if(A[i]>A[j])
	{
		temp=A[j];
		A[j]=A[i];		
		A[i]=temp;			
	}	
}

/* 快速排序 */
void quick_sort(int x[],int left, int right)
{
   int temp = left;
   int i;
   if (left >= right)
        return;
    
    for (i = left+1; i<= right; i++)
    {
        if(x[i] < x[left])
            swap(x, ++temp, i);
    }
    swap(x, left, temp);
    quick_sort(x,left, temp-1);
    quick_sort(x,temp+1, right);
}

int main()
{
	int number[]={10,9,8,7,6,5,4,3,2,1};
    int i=0,len;
	printf("start ....\n");	
	len=(int)sizeof(number)/sizeof(*number);
	printf("len =%d\n",len);	
    quick_sort(number,0,9);
	for(i=0;i<10;i++)
	{
	  printf("%d ",number[i] );				
	}
     printf("\n");		
     printf("end ....\n");		
	exit(0);
}

代码已经编译调试过了,亲测可行。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章