您的位置:首页 > 编程语言 > C语言/C++

读《算法导论》我来C语言实现(4)——快速排序

2012-11-20 20:51 225 查看
快速排序通常是用于排序的最佳的使用选择,这是因为其平均性能相当好,像合并排序一样,快速排序也是基于分治模式的,下面是快速排序的C语言实现过程:

#include <stdio.h>

//将数组分为两部分,前半部分和后半部分分别小于和大于分隔的那个数
unsigned int partition(int *A, int p, int r)
{
int x = A[r];
int i = p - 1, j, temp;
for (j = p; j < r; j++)
{
if (A[j] < x)
{
i++;
temp = A[j];
A[j] = A[i];
A[i] = temp;
}
}
temp = A[r];
A[r] = A[i + 1];
A[i + 1] = temp;
return i + 1;
}

//采用分治法,递归排序
void quick_sort(int *A, int p, int r)
{
int q;
if (p < r)
{
q = partition(A, p, r);
quick_sort(A, p, q - 1);
quick_sort(A, q + 1, r);
}
}

int main()
{
int array[] = {5, 10, 2, 3, 9, -1, 3};
int i;
quick_sort(array, 0, sizeof(array) / sizeof(int) - 1);
for (i = 0; i < sizeof(array) / sizeof(int); i++)
{
printf("%d ", array[i]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: