快速排序的C语言代码实现
2011-11-13 22:49
543 查看
作者:李慧芹,华清远见嵌入式学院讲师。
快速排序实质上是对“冒泡排序”的一种改进,整个排序过程可概括为:通过N趟的排序将原本的排序数据分为若干块进行分块排序,而在每趟排序过程中,以指定的关键字将待排数据分别分为比关键字大的部分和比关键字小的部分,反复上述过程,将整个待排数列分散为若干个小数列而分别进行排序操作。假设我们现对一列数进行快速排序,其C语言代码实现如下:
文章来源:http://www.embedu.org/Column/Column309.htm
快速排序实质上是对“冒泡排序”的一种改进,整个排序过程可概括为:通过N趟的排序将原本的排序数据分为若干块进行分块排序,而在每趟排序过程中,以指定的关键字将待排数据分别分为比关键字大的部分和比关键字小的部分,反复上述过程,将整个待排数列分散为若干个小数列而分别进行排序操作。假设我们现对一列数进行快速排序,其C语言代码实现如下:
#include <stdio.h> int partition(int *data,int low,int high); void sort(int *data,int low,int high); void quick_sort(int *data,int n); 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; } 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; } //快排每趟进行时的枢轴要重新确定,由此进 //一步确定每个待排小记录的low及high的值 void sort(int *data,int low,int high) { if(low >= high) return ; int pivotloc = 0; pivotloc = partition(data,low,high); sort(data,low,pivotloc-1); sort(data,pivotloc+1,high); } //该函数进行sort过程的调用 void quick_sort(int *data,int n) { sort(data,0,n-1); }
文章来源:http://www.embedu.org/Column/Column309.htm
相关文章推荐
- 快速排序的C语言代码实现
- 快速排序的c语言实现代码
- 简单的C语言快速排序实现代码
- 快速排序的分析及c语言代码
- [Android开发] 在项目中快速实现 列表字母排序滑动索引 功能原理以及过程代码
- 快速排序的C语言实现
- C语言中快速排序和插入排序优化的实现
- (数据结构排序的实验四)快速,冒泡,简单选择,直接插入排序的c语言实现!!
- 快速排序递归与非递归代码实现与思考
- 快速排序的C语言实现及其时间复杂度
- 快速排序java代码实现
- 算法代码实现之三向切分快速排序,Golang(Go语言)实现
- 算法代码实现之三向切分快速排序,C/C++实现
- C语言调用库函数实现快速排序
- 快速排序c语言递归和栈实现
- 交换排序——冒泡排序和快速排序,C++代码实现
- 快速排序一轮的代码实现
- JS实现随机化快速排序的实例代码
- 几种基本的排序算法(选择排序,冒泡排序,快速排序,归并排序,希尔排序)C语言实现
- 快速排序和二分查找算法的实现C语言