快速排序简单解释(C++)
2015-12-17 18:37
381 查看
直接上代码 代码和解释混合 具体解释每句代码的意思
至于快速排序的思想网上有很多 就不解释了
代码来自于程序员面试笔试宝典
至于快速排序的思想网上有很多 就不解释了
代码来自于程序员面试笔试宝典
#include<iostream> //导入头文件 using namespace std; //引用命名空间 void QuitSort(int *a,int low,int high) { //x用来存基准数 int x=0 //要先判读传入参数 是否合法 如果不和发就返回 if(low>=high) return; /*把第一数个当做基准数 这里有两个数i,j分别代表数组的最高位和最低位*/ int i=low; int j=high; x=a[low]; //每一次排序结束的标志就是当j不在大于i 这个时候所有的数都已经走过了一遍 while(i<j) { /*这个循环的作用就是判断最后一位是不是小于基准数 不是小于基准数就看前一位是不是小于基准数*/ while(i<j && a[j]>=x) { j--; } /*啊,终于找到比基准数小的了 这时候就把基准数放到数组的第一位吧 因为第一位已经被我们拿出来了 其实并没有拿走第一位 只是可以这么理解而已 不要忘记判断 这次排序是不是已经结束了*/ if(i<j) { a[i]=a[j]; i++; } //这个就是同理了 从前面找到一个比基准数大的 放到之前后面被拿走的那个数的位置 while(i<j && x>=a[i]) { i++; } if(i<j) { a[j]=a[i]; j--; } } a[i]=x; //我们已经排序了第一次 就递归调用啦 QuitSort(a,low,i-1); QuitSort(a,i+1,high); } int main() { int i=0; int num[]={5,4,9,8,7,6,0,1,3,2}; int len=sizeof(num)/sizeof(num[0]); QuitSort(num,0,len-1); for(i;i<len;i++) { cout<<num[i]<<endl; } return 0; }
相关文章推荐
- VC++或QT下 高精度 多媒体定时器
- C语言条件编译及编译预处理阶段
- C语言底层驱动格式
- C/C++代码检视实例
- C语言 面试部分
- C++11: default template arguments for both function and class templates
- 利用swig实现python调用C/C++的方法
- SWIG,C/C++类库与Java,Python等泛高阶语言的万能粘合剂
- c语言:创建一个数组,分别实现函数初始化数组、 清空数组、数组元素的逆置
- C/C++代码检视要点
- C语言字符数组自我结束的标志
- C /C++标准库 - <cassert> (assert.h)
- C++ 关于重载
- PB调用C++编写的读写dbf文件头的DLL
- c++学习之new int()和new int[]的区别
- C++11新特性,利用std::chrono精简传统获取系统时间的方法
- CSocketClient.cpp
- c语言:编写折半查找函数
- 剑指offer第三十六题【平衡二叉树】c++实现
- C++常用的#include头文件总结