詳細說明一個快速排序的例子

關於快速排序的邏輯原理是這樣的:

將兩個指針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);
}

代碼已經編譯調試過了,親測可行。

 

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