快速排序的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 )
快速排序实质上是对“冒泡排序”的一种改进,整个排序过程可概括为:通过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 )
相关文章推荐
- C语言实现选择排序、冒泡排序和快速排序的代码示例
- C语言使用stdlib.h库函数的二分查找和快速排序的实现代码
- 快速排序 c语言代码实现
- 快速排序的C语言代码实现
- c语言实现快速排序
- 哈夫曼的c语言实现代码
- C语言实现的统计素数并求和代码分享
- C语言 实现N阶乘的程序代码
- C语言字符串库函数的实现也是笔试题常考的题目,以下代码没有严格测试,只是简单的实现:
- 严蔚敏 数据结构 栈 代码C语言实现 用C++编译器运行
- java快速排序代码实现
- 快速排序置随机数代码实现
- C语言实现UDP连接的参考代码
- 逆波兰 计算器 C语言实现代码
- 快速排序(c语言实现)
- 实现图像格式的转换代码 C语言实现 RGB565转BMP图像
- 顺序表C语言代码实现
- 《编程之美》买书问题及c语言代码实现
- 知识点13:手写代码-倒转链表的c语言实现
- 数值作业:二分法求方程的根之C语言实现代码