非遞迴快速排序演算法

2021-06-18 12:17:41 字數 768 閱讀 8517

昨天做人人網筆試題,其中乙個就是快排非遞迴演算法,當時考慮的不全面,下面發下正確答案。

先說遞迴演算法

#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...