您的位置:首页 > 其它

快速排序随机化版本

2014-05-10 22:15 465 查看
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void quickSort(int *, int, int);
int partition(int *, int, int);
void exchange(int *, int *);

int main()
{
int A[10] = {2,3,6,9,80,5,4,10,12,1};
int i;
quickSort(A,0,9);

for (i = 0; i < 10; i++)
{
printf("%d ", A[i]);
}

printf("\n");
system("pause");
return 0;
}

void quickSort(int a[], int p, int r)
{
int q = 0;

if (p < r)
{
q = partition(a, p, r);
quickSort(a, p, q - 1);
quickSort(a, q + 1, r);
}
}

int partition(int a[], int p, int r)
{
int key, i, j;
int q;

srand((unsigned)time(NULL));
q = rand()%(r - p + 1) + p;

exchange(&a[q],&a[r]);
key = a[r];

for (i = p, j = p; j < r; j++)
{
if (a[j] <= key)
{
exchange(&a[i], &a[j]);
i++;
}
}
exchange(&a[i], &a[r]);
return i;
}

void exchange(int *p, int *r)
{
int temp;
temp = *p;
*p = *r;
*r = temp;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: