手机
当前位置:查字典教程网 >编程开发 >C语言 >c语言快速排序算法示例代码分享
c语言快速排序算法示例代码分享
摘要:步骤为:1.从数列中挑出一个元素,称为"基准"(pivot);2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在...

步骤为:

1.从数列中挑出一个元素,称为 "基准"(pivot);

2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。

3.递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会退出,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。

复制代码 代码如下:

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#define RANDOM(i) (rand()%i)

#define N9 //设置数组长度

//分区操作

int Partition(int array[], int left, int right)

{

int i,j;

int temp;

j = left-1;

for (i=left; i<=right; i++)

{

if (array[i] <= array[right])//以最后一个数组的值为基准

{

j++;

temp = array[j];

array[j] = array[i];

array[i] = temp;

}

}

return j;

}

//迭代运算

void QuikSort(int array[], int left, int right)

{

int pivot;

if (left < right)

{

pivot = Partition(array, left, right);

QuikSort(array, left, pivot-1);

QuikSort(array, pivot+1, right);

}

}

//示例

int main()

{

int i = 0;

int a[N];

srand((int)time(0)); //设置随机数种子

for (i=0; i<N; i++) //排序前

{

a[i] = RANDOM(100);

printf("%dt", a[i]);

}

printf("nn");

QuikSort(a, 0, N-1);

for (i=0; i<N; i++) //排序后

{

printf("%dt", a[i]);

}

}

【c语言快速排序算法示例代码分享】相关文章:

c语言中static和extern的用法详细解析

C语言中函数与指针的应用总结

C语言程序设计50例(经典收藏)

C语言使用stdlib.h库函数的二分查找和快速排序的实现代码

c语言冒泡排序法代码

C语言 扩展欧几里得算法代码

C语言函数的递归和调用实例分析

c语言连接mysql数据库的实现方法

c语言中static的用法详细示例分析

C语言栈顺序结构实现代码

精品推荐
分类导航