紫书_第八章_高效算法设计_8.2.2——快速排序
来源:互联网 发布:nginx做负载均衡 编辑:程序博客网 时间:2024/06/06 00:57
其分为三个步骤:
1.划分问题:把数组的各个元素重排后分成左右两部分,左边始终小于key,右边大于key。
2.递归求解:把左右两部分分别排序。
3.合并问题:其不用合并,因为此时数组已经有序。
来看代码:
/*************************************************************************> File Name: 1166.cpp> Author:chudongfang > Mail:1149669942@qq.com > Created Time: 2016年06月15日 星期三 16时43分32秒 ************************************************************************/#include<iostream>#include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>#define INF (1ll<<60)-1using namespace std;typedef long long ll;void Q_sort(int a[],int n);int main(int argc,char *argv[]){ int a[100]; int n; scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]); Q_sort(a,n); for(int i=0;i<n;i++) printf("%d ",a[i]); return 0;}void Q_sort(int a[],int n){ int key=a[0];//利用key进行划分 int i=0,j=n-1; if(n<=1) return ; else { while(i!=j) { for(;i<j;j--) if(a[j]<key) { a[i]=a[j]; break; } for(;i<j;i++) if(a[i]>key) { a[j]=a[i]; break; } if(i==j) a[i]=key; } Q_sort(a,i);//递归求解 Q_sort(a+i+1,n-i-1); //由于其已经有序,就不用再进行合并。 }}
0 0
- 紫书_第八章_高效算法设计_8.2.2——快速排序
- 紫书_第八章_高效算法设计_8.2.1——归并排序
- 紫书_第八章_高效算法设计_8.2.3——二分查找
- 紫书_第八章_高效算法设计_8.3.1——棋盘覆盖问题
- 紫书_第八章_高效算法设计_8.3.2——循环日程表问题
- 紫书_第八章_高效算法设计_8.3.3——巨人与鬼
- 算法导论_第八章_线性时间排序
- 排序算法_快速排序
- 排序算法_快速排序
- 快速排序_排序算法
- 算法导论_第七章_快速排序
- 数据结构_快速排序算法
- JAVA算法_快速排序
- jAVA_算法_快速排序
- 算法竞赛入门经典:第八章 高效算法设计 8.4快速排序应用之第k小的数
- 第八章 高效算法设计
- 排序算法-交换排序_快速排序
- 高效算法设计_再谈排序和检索(归并排序,逆序数对)
- eclipse崩溃后,项目无法启动报错Removing obsolete files from server... Could not clean server 。。。。
- 【leetcode】118. Pascal's Triangle
- 23、DOM的高级应用-------关于Ul中的 li 的排序
- Linux kernel的中断子系统之(六):ARM中断处理过程
- Scala伴生类Class和伴生对象Object的区别
- 紫书_第八章_高效算法设计_8.2.2——快速排序
- Carousel在IE8兼容性问题
- android MK文件简介
- Python学习笔记 —— 类
- ionic 卡片滑动效果
- Tcp 端口扫描器 (Python)
- c#treeview选中节点
- 浅析CSS——元素重叠及position定位的z-index顺序
- Mysql无法创建外键的原因