昨天做人人網筆試題,其中乙個就是快排非遞迴演算法,當時考慮的不全面,下面發下正確答案。
先說遞迴演算法
#include
#include
using namespace std;
int partion(int*arr,int p,int r)
}int temp=arr[i];
arr[i]=arr[p];
arr[p]=temp;
return i;
}void quicksort(int *arr,int p,int r)
}void main()
;quicksort(a,0,4);
for(int i=0;i<5;i++)
std::cout}下面是非遞迴演算法
#include
#include
using namespace std;
int partition(int*arr,int p,int r)
}int temp=arr[i];
arr[i]=arr[p];
arr[p]=temp;
return i;
}void quicksort(int *arr,int p,int r)
if(p
while(!s.empty())
if(left}}
void main()
;quicksort(a,0,4);
for(int i=0;i<5;i++)
std::cout}
快速排序非遞迴演算法
本人根據書上的三數中值快速排序修改 struct leftright inline void swap int a,int b void qsort int a,int left,int right for int m 1 0 k ma center swap a left a center if ...
快速排序 非遞迴演算法
include stdafx.h include using namespace std int myarray void printarray int array,int len printf r n int partition int s,int l,int r 從左向右找大於或等於x的數來填s...
快速排序實現(遞迴 非遞迴)
首先是劃分演算法,假設每次都以第乙個元素作為樞軸值,進行一趟劃分 int partition int a,int low,int high a low pivot 將樞軸值元素置於最終位置 return low 第乙個while迴圈裡的 還可以採用如下形式 while low high a high...