快速排序代码实现
2015-08-23 20:17
465 查看
快速排序代码实现
快速排序代码:#include <stdio.h> void QuickSort(int * a, int low, int high); int FindPos(int * a, int low, int high); int main(void) { int a[6] = {2, 1, 0, 5, 4, 3}; int i; QuickSort(a, 0, 5); for(i=0; i<6; ++i) printf("%d ", a[i]); printf("\n"); return 0; } void QuickSort(int * a, int low, int high) { int pos; if(low < high)//只有low和high不等的时候才排序 { //a数组中第一个元素从low开始到high的依次排序后的位置找到 pos = FindPos(a, low, high); //找到第一个元素的位置后, //我们就可以把数组按这个位置劈成 //两半,我们就可以排序了 QuickSort(a, low, pos-1); QuickSort(a, pos+1, high); } } int FindPos(int * a, int low, int high) { //每一次排序的目的是为了找到a[low]位置的元素的在数组a中的最终位置 int val = a[low]; while(low < high) { while(low < high && a[high]>=val) --high; a[low] = a[high]; while(low < high && a[low]<=val) low++; a[high] = a[low]; }//此处循环完后,a[low] = a[high] a[low] = val; return low;//或return high,因为此时low和high相等 }
相关文章推荐
- Java多线程的用法详解
- [C++]Implement strStr() 找到子字符串第一次出现的位置
- 像素翻转(Java)
- 推荐25款php中非常有用的类库
- Java策略设计模式感悟
- java多线程详细总结
- Java初级培训笔记------IO流(2)
- ASP.NET mvc下action的跳转方式
- [C++]Merge Two Sorted Lists 归并两个排序的链表
- java获取文件编码
- 快速排序(c语言实现)
- 编写高质量代码改善C#程序的157个建议——建议139:事件处理器命名采用组合方式
- 浅谈c中switch的暴力跳转
- 如何在C++类中安全地使用多线程中的处理函数
- Java 四大域对象总结
- 使用JDBC连接Mysql数据库存入二进制图片并实现读取在PHP中打开展示
- Spring配置文件解析--bean属性
- ### Python Learning
- Java修饰符关键词大全
- Spring学习之Aop的基本概念