1. 程式人生 > >快速排序C語言

快速排序C語言

思路:快速排序是對氣泡排序的一種優化,通過確定一個標誌位來從左右兩邊對無序數列進行劃分,然後遞迴實現,直到無法再劃分,即是排序結果。時間複雜度O(nlog2n),不穩定。

int partition(int * data,int i,int j)
{
	int temp = data[i];
	while(i < j)
	{
		while(data[j] >= temp&&i < j) j--;
		if(i < j) data[i] = data[j];
		while(data[i] <= temp&&i < j) i++;
		if(i < j) data[j] = data[i];
	}
	data[i] = temp;
	return i;
}

void sort(int * data,int i,int j)
{
	int k;
	if(i < j)
	{
		k = partition(data,i,j);
		sort(data,i,k-1);
		sort(data,k+1,j);
	}	 
}