/*
 * quick_sort.cpp
 *
 *  Created on: 2016-3-21
 *      Author: Lv_Lang
 */

//快速排序
#include <iostream>
using namespace std;

int a[100];//全局定义数组,方便函数使用

void swap(int i,int j)
{
	int temp = a[i];
	a[i] = a[j];
	a[j] = temp;
}

/*快速排序解释:
核心思想是找一个基准元素(一般选取首位元素),
然后遍历元素,比基准小的放左边,比基准大的放右边。
但其实按这个思想来写代码其实比较难写的,
所以说的更通俗一点就是:先把首位的拿出来被比较,
用一个哨兵j从数组最右边开始扫描,如果有小于基准的,先停下来;
然后哨兵i开始从数组最左边开始扫描,如果有大于基准的,也停下来;
此时左边有个比基准大的,右边有个比基准小的,交换二者就行了。
最后当两个哨兵相遇时,证明左右都扫了一遍了,
然后把他们相遇的那个点的元素跟基准元素互换位置,这就得到了一个初步排序的序列。
然后把刚才得到的序列切成两半(不含基准元素),
基准前面的元素是一半,基准后面的元素是另一半,对这两个子序列重复刚才的那个步骤。
递归一下,就能最终得到排好序的序列了。*/

void quick_sort(int left,int right)
{
	if(left >= right)//递归临界条件
		return;
	int i,j,temp;
	i = left;
	j = right;
	temp = a[left];
	while(i < j)
	{
		while(a[j] >= temp && i < j)
			j--;
		while(a[i] <= temp && i < j)
			i++;
		swap(i,j);
	}
	swap(left,i);
	quick_sort(left,i-1);
	quick_sort(i+1,right);
}

int main()
{
	int n;
	cin>>n;
	for(int i=0;i < n;i++)
		cin>>a[i];
	quick_sort(0,5);
	for(int i=0;i<5;i++)
		cout<<a[i]<<" ";
	cout<<a[5]<<endl;

	return 0;
}

另外,这篇博客写的挺好的,形象易懂:

坐在马桶上看算法之快速排序

最新文章

  1. kali 渗透的一些笔记
  2. MyBatis学习总结_07_Mybatis缓存
  3. Spring 实践 -AOP
  4. 如何调试最新的asp.net mvc源码
  5. C++的优秀特性3:构造函数和析构函数
  6. Erlang安装简介
  7. 关于弹出层(iframe)时刷新页面的js
  8. hibernate update部分更新
  9. ie7下div覆盖在iframe上方,ie8就不行,怎么解决
  10. NI Vision for LabVIEW 基础(一):NI Vision 简介
  11. The request sent by the client was syntactically incorrect问题解决
  12. Python 直接赋值、浅拷贝和深度拷贝全解析
  13. Eclipse配置tomcat程序发布到哪里去了?
  14. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxError Exception
  15. 随意下载:afinal jar
  16. 【mysql】mysql基准测试
  17. Linux运维跳槽40道面试精华题
  18. 2292: Quality of Check Digits 中南多校 暴力枚举
  19. 使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(二)
  20. 简单比较init-method,afterPropertiesSet和BeanPostProcessor

热门文章

  1. 关于ORACLE隐式转换后性能问题
  2. 微信JS SDK PHP Demo
  3. python学习之while语句
  4. MariaDB链接超时优化
  5. [poj2828] Buy Tickets (线段树)
  6. [问题2014A02] 解答一(两次升阶法,由张钧瑞同学、董麒麟同学提供)
  7. SQL 向上取整、向下取整、四舍五入取整的实例!round、rounddown、roundup
  8. 《BI那点儿事》数据流转换——聚合
  9. spring主要的作用?
  10. Ajax中return false无效 怎么解决?