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

快速排序的C语言代码实现

2010-09-13 18:30 405 查看
作者:李慧芹,华清远见嵌入式学院讲师。
快速排序实质上是对“冒泡排序”的一种改进,整个排序过程可概括为:通过N趟的排序将原本的排序数据分为若干块进行分块排序,而在每趟排序过程中,以指定的关键字将待排数据分别分为比关键字大的部分和比关键字小的部分,反复上述过程,将整个待排数列分散为若干个小数列而分别进行排序操作。假设我们现对一列数进行快速排序,其C语言代码实现如下:
#include <stdio.h>

int partition(int *data,int low,int high)

{ int t = 0;

t = data[low];

while(low < high)

{ while(low < high && data[high] >= t)

high--;

data[low] = data[high];

while(low < high && data[low] <= t)

low++;

data[high] = data[low];

}

data[low] = t;

return low;

}
void sort(int *data,int low,int high) //快排每趟进行时的枢轴要重新确定,由此进 //一步确定每个待排小记录的low及high的值

{ if(low >= high)

return ;

int pivotloc = 0;

pivotloc = partition(data,low,high);

sort(data,low,pivotloc-1);

sort(data,pivotloc+1,high);

}

void quick_sort(int *data,int n) //该函数进行sort过程的调用

{ sort(data,0,n-1); }
int main()

{ int i;

int data[]={49,38,32,98,65,74,12,8};

quick_sort(data,sizeof(data)/sizeof(int));

for( i = 0 ; i < sizeof(data)/sizeof(int); i++)

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

printf("/n");

return 0;

}
如果您喜欢这篇文章,可以加华清远见老师为好友,单击以下链接即可:

http://student.csdn.net/invite.php?u=45153&c=8af704eb3cd8e773

(作者:华清远见嵌入式培训中心 www.embedu.org www.farsight.com.cn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: