首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

快排递归转非递归算法,该怎么处理

2013-01-04 
快排递归转非递归算法QSort(L, low, high){ while(low high) {pivotkey partition(L, low, high)QSor

快排递归转非递归算法
QSort(L, low, high)
{
 while(low < high)
 {
  pivotkey = partition(L, low, high);
  QSort(L, low, pivotkey - 1);
  QSort(L, pivotkey + 1, high);
 }
}

求该代码转非递归算法
[解决办法]
未验证,仅参考


void QuickSort(int a[],int p,int q)
{
 stack<int> st;
 int j;
 do{
      while(p<q)
      {
         j=partition(a,p,q);   
         if( (j-p)<(q-j) )
         {
            st.push(j+1);
            st.push(q);
            q=j-1;
         }
         else
         {
           st.push(p);
           st.push(j-1);
           p=j+1;
         }   
      }
  if(st.empty()) return;
  q=st.top();st.pop();  
  p=st.top();st.pop();
 }while(1);
}

热点排行