快速排序算法简述
来源:互联网 发布:如何评价阿凡达 知乎 编辑:程序博客网 时间:2024/05/20 03:08
快速排序在算法具有重要的地位,每一位程序都应该了解,并且能够熟练使用,以下最简单递归实现方法(C++)
#include <iostream>using namespace std;void quickSort(int num[],int left,int right){ int i,j,tmp; if(left<right) { i=left; j=right; tmp=num[left]; while(i<j) //填坑的方法将数据有序在相应数据的两侧 { while(i<j&&num[j]>=tmp) j--; if(i<j) num[i++]=num[j]; while(i<j&&num[i]<tmp) i++; if(i<j) num[j--]=num[i]; } num[i]=tmp; quickSort(num,left,i-1); quickSort(num,i+1,right); }}int main(){ int i; int num[]={2,39,1,32,90,12}; for(i=0;i<5;i++) cout<<num[i]<<','; cout<<num[5]<<endl; quickSort(num,0,5); for(i=0;i<5;i++) cout<<num[i]<<','; cout<<num[5]<<endl; return 0;}
由于递归的特性,在数据量较大的时候并不推荐使用,但是就学习而言,递归实现是最容易理解的
上述代码中,quickSort函数 即是快速排序的核心,在Main函数中即使对排序算法的简单排序,对于代码的为何这样写,这是快排的思想,即在数组中任意取一位置,将其他的数据与它进行比较,小于的放在左边,大于或者等于的放在右边,不断这样做,当进行有限次数个后,我们便可以看到一个有序的数组,在这里,既然可取任意一位置,不妨取第一个,然后将该数两端不断进行该操作,最后即完成有序数列。
- 需要注意的问题
在初次看到该程序,我一直无法理解最开始的tmp值最后去哪了,这里就涉及一个常用的方法-填坑法,每一次赋值都是将后一个值代替前面一个值,这样就不需要每次都保存前面的值,只需要保存第一个开始的值,即tmp保存的num[left]
0 0
- 快速排序算法简述
- 简述数据结构与算法之快速排序
- 常用排序算法简述之一:快速排序法
- 简述各种排序算法
- 排序算法简述
- 数据结构排序算法分类简述
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法---快速排序
- 排序算法-快速排序
- 排序算法------快速排序
- 排序算法---快速排序
- 排序算法-快速排序
- 排序算法---快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法:快速排序
- 扁平化按钮
- 黑马程序员——File类及其常见操作
- PKU 1140 - Brackets Sequence (区间dp + 记忆化)
- IDF实验室之简单的PE文件逆向
- Ember.js 入门指南——属性传递
- 快速排序算法简述
- Resources in Visual Tracking
- Python微博地点签到大数据实战(一)微博API的使用
- dsaf
- Android学习实践:9.多选框CheckBox
- jQuery CSS 操作 - offsetParent() 方法
- Eclipse配置Tomcat服务器
- 关于图论中最短路径的五道题-ACM
- u3d坐标系详解