搞定快速排序

快速排序,只要是應用分而治之策略對數組一類的進行排序,大概思路是,確定一個元素,然後分別從左邊和右邊開始,用確定的元素相比,以從小到大排序爲例,左邊開始的大於確定元素的話,就交換位置,右邊的小於確定元素的話也交換位置,然後使用遞歸的思想對其中的數再排序 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);

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