php 尾递归 快速排序,快速排序尾递归版C语言

看<>,一道题.尾递归,循环换递归.思想很好,用处很大.

没有华丽的性能提高,只是展现尾递归的思想.确实,快速排序我还并未搞懂.先继续进行吧.

贴~

/*2011-04-20-21.32.c -- 快速排序尾递归版*/

#include

#include

#define SIZE (22)

int main (void) ;

void printArray (const int * const array, const int size) ;

void swap (int * const left, int * const right) ;

void qSort (int * const array, int left, const int right) ;

void quickSort (int * const array, const int size) ;

int main (void)

{

int array[SIZE] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 55, 0, 77, 128, 66, 88, -1, 3, 45, 15, 77} ;

int size = SIZE ;

printArray (array, size) ;

quickSort (array, size) ;

printArray (array, size) ;

return 0 ;

}

void printArray (const int * const array, const int size)

{

int i ;

for (i = 0; i < size; i++)

printf ("%d ", array[i]) ;

putchar ('/n') ;

}

void swap (int * const left, int * const right)

{

int temp ;

temp = *left ;

*left = *right ;

*right = temp ;

}

void qSort (int * const array, int left, const int right)

{

Item temp ;

int i, j, pivot ;

while (left < right)

{

i = left ;

j = right - 1 ;

pivot = right ;

while (i < j)

{

while (i != right && array[i] <= array[pivot])

i++ ;

while (j != left && array[j] > array[pivot])

j-- ;

if (i < j)

swap (array + i, array + j) ;

else

break ;

}

swap (array + i, array + pivot) ;

quickSort (array, left, i - 1) ;

left = i + 1 ;

}

}

void quickSort (int * const array, const int size)

{

qSort (array, 0, size - 1) ;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值