快速排序的思想就是採用分治的思想,先選定一個比較的基準元素,一般選擇數組中的第一個元素,然後分別以最左邊的元素,下標爲0和最右邊的元素下標爲n-1,分別從左邊和右邊依次用下標從中間靠攏,期間分別與基準元素比較,如果分別比之小和比之大,則下標移動,否則兩者都停止,交換元素,繼續,這趟循環直到下標大小相同,隨後便將基準元素放入到最終下標位置處,這便是其中的一次循環,經過這次循環,左子列的數都比這個基準元素小,右子列的數都比這個基準元素的數大,以後就可以用這個規律採用遞歸分別排序這個基準元素左邊的左子列和右邊的右子列。
void quick_sort(int a[],int left,int right)
{
int l = left,r = right,temp;
while(l<r)
{
pivot = a[(left+right)/2];
while(a[l]<pivot)
i++;
while(a[j]>pivot)
j--;
if(i>=j)
break;
temp = a[i];
a[i] = a[j];
a[j] = temp;
l++;
r--;
}
if(l== r)
l++;
if(left<r)
quick_sort(a,left,l-1);
if(l<right)
quick_sort(a,l+1,right);
}