您的位置:首页 > 其它

[排序]快速排序

2014-09-02 09:22 148 查看
#include <stdio.h>

int  Partition(int *iArray, int i, int j)//划分
{
int pivot = iArray[ i ];

while(i < j)
{
while(i < j && iArray[ j ] >= pivot )
{
j --;
}

if(i < j)
{
iArray[ i ++ ] = iArray[ j ];
}

while(i < j && iArray[ i ] <= pivot)
{
i ++;
}

if(i < j)
{
iArray[ j -- ] = iArray[ i ];
}
}

iArray[ i ] = pivot;

return i;
}

void QuickSort(int *iArray, int low, int high)
{
if(low < high)
{
int pivotpos = Partition(iArray, low, high);

QuickSort(iArray, low, pivotpos - 1);

QuickSort(iArray, pivotpos + 1, high);
}

}
int main()
{
int iArray[] = {1,0,9,3,7,2,-90,78,45,4,77,79,78,37,0,-1,2,3,6,9,5,4,78,78,78,1,1,1};

int len = sizeof(iArray) / sizeof(int);

QuickSort(iArray, 0, len - 1);

for(int i = 0; i < len; ++ i)
{
printf("%3d ",iArray[ i ]);
}

printf("\n");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: