(排序)用C语言实现的快速排序(交换排序)
2013-03-27 23:35
239 查看
/* *快速排序,就是在待排序的n个元素中选取任一个元素(通常取第一个元素)作为基准, *把该元素放入最终的位置上(即归位一个元素),数据序列被该元素划分成两部分,前半部分 *小于该元素,后半部分大于该元素,这个过程称为一次快排。以后对所有的两部分分别重复 *上述过程,直至每部分只有一个元素或者为空为止。 * */ #include<stdio.h> void QuickSort(int *a,int low,int high); int main(void) { int a[10]={122,53,15,6589,2767,544516,576,9,63,33}; QuickSort(a,0,9); for(int k=0;k<10;k++) { printf("%d\n",a[k]); } return 0; } void QuickSort(int *a,int low,int high) { //存放首尾两个元素的位置 int i=low,j=high; //存放基准元素 int temp; //保证区间至少存在两个元素 if(high>low) {//用区间第一个元素作为基准 temp=a[i]; //从区间两端交替向中间扫描,直至i=j为止 while(i!=j) { //从右向左扫描,查找第1个关键字小于temp的记录R[j] while(i<j&&temp<a[j]) j--; //找到这样的a[j],将a[j]与a[i]交换 a[i]=a[j]; //从左向右扫描,查找第1个关键字大于temp的记录R[i] while(i<j&&temp>a[i]) i++; //找到这样的a[i],将a[i]与a[j]交换 a[j]=a[i]; } //一趟快速排序之后,基准记录已被最后定位,把基准元素移动到最终i遍历到的位置 a[i]=temp; //对左区间递归 QuickSort(a,low ,i-1); //对右区间递归 QuickSort(a,i+1,high); } }
相关文章推荐
- 排序系列之(3)快速排序及C语言实现
- 参考C语言的qsort函数实现一个一个能对任意数据类型(包括结构体)的数组进行排序的函数(里面用的不是快速排序)
- 排序【6】之快速排序的C语言实现
- C语言实现选择排序、冒泡排序和快速排序的代码示例
- 排序(5)---------快速排序(C语言实现)
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- (排序)用C语言实现的气泡排序(交换排序)
- (排序)用C语言实现的简单选择排序(选择排序,其实个人认为也是交换排序)
- 用c语言实现冒泡排序,选择排序,快速排序
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- [笔记]一道C语言面试题:实现快速排序
- C语言选择排序详解及其实现
- <5>c语言实现ATM存取款系统(文件、排序)
- java实现排序(6)-快速排序
- C语言提高-第26/27讲: 实现线性表基本操作的函数/编写查找和排序函数
- c语言常用内部排序的实现
- 各种排序的C语言实现
- 交换排序——冒泡排序和快速排序,C++代码实现
- C语言单向动态链表程序,实现链表的建立,合并,重新排序,链表元素的插入与删除,以及根据元素成员的值进行元素删除。
- 常见排序的实现 c++ 冒泡排序 插入排序 选择排序 快速排序