快速排序(遞歸)

快速排序的原理很簡單,就是找一個分界點,把比它大的放到一邊,把比它小的放到另一邊。下面看一下圖和代碼





代碼實現

void Qsort(int a[],int low,int high)
{
   if(low>=high)
     return;
   
   int first=low;//副本做遊標
   int last=high;
   int key=a[first];//確定第一個爲分界點
   
   while(first<last)//遊標相碰,退出循環
   {
      while(first<last&&a[last]>=key)//從後向前掃到第一個比分界點小的值
        last--;
     a[first]=a[last];//用找到的Last直接覆蓋First,之前的值已有保存
     
      while(first<last&&a[first]<=key)//從前向後找到第一個比分界點大的值
        first++;
     a[last]=a[first];//Frist直接覆蓋Last,之前的值已有保存
   }
   
   a[first]=key;//界點位置已經確定
   Qsort(a,low,first-1);//遞歸兩邊排序
   Qsort(a,last+1,high);
}



發佈了34 篇原創文章 · 獲贊 25 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章