快速排序,只要是應用分而治之策略對數組一類的進行排序,大概思路是,確定一個元素,然後分別從左邊和右邊開始,用確定的元素相比,以從小到大排序爲例,左邊開始的大於確定元素的話,就交換位置,右邊的小於確定元素的話也交換位置,然後使用遞歸的思想對其中的數再排序 quicksort(num,first + 1,last); quicksort(num,first,last - 1);代碼如下
void swap(int &a ,int &b) //交換位置
{
int temp; //臨時變量
temp = a ;
a = b ;
b = temp;
}
void quicksort(int num[],int first ,int last)//快速排序
{
if(first == last)
return;
for(int i = first ; i != last ; i++) //升序
{
if( num[first] > num[i])
swap(num[first],num[i]);
}
for(int j = last ; j != first ;j--) //降序
{
if(num[last] < num[i])
swap(num[last],num[i]);
}
quicksort(num,first + 1,last);
quicksort(num,first,last - 1);
}