063day(快速排序和分治例题)
来源:互联网 发布:java反射之getmethod 编辑:程序博客网 时间:2024/05/21 17:01
172210704111-陈国佳总结《2017年12月13日》【连续063天】
标题:快速排序和分治例题;
内容:
A.快速排序:
排序数组时:1)设k=a[0],将k挪到适当位置,使得比k小的元素都在左边,比k大的元素都在右边;
2)把k左边的部分快速排序;
3)把k右边的部分快速排序;
void swap(int &a,int &b)
{
int tmp=a;
a=b;
b=tmp;
}
void QuickSort(int a[],int s,int e)
{
if(s>=e) return;
int k=a[s];
int i=s,j=e;
while(i!=j){
while(j>i&&a[j]>=k) --j;
swap(a[i],a[j]);
while(i<j&&a[i]<=k)++i;
swap(a[i],a[j]);
}
QuickSort(a,s,i-1);
QuickSort(a,i+1,e);
}
B.例题:
输出前m大的数:
给定一个数组包含n个元素,统计前m大的数并且把这m个数从大到小输出;
一般思路:排序后在输出;
简化思路:把前m大的都弄到数组最右边,在把这m个元素排序输出;
arrangeRight(k):把数组前k大的数弄到最右边:
1)设key=a[0],将key挪到适当位置,其右都大于等于key,其左都小于等于key;
2)数组key前共b个元素,key后(包括key)共a个元素;
a=k done
a>k 对a个元素进行arrangeRight(k);
a<k 对左边b个元素进行arrangeRight(k-a);
明日计划:学习多态实例;
- 063day(快速排序和分治例题)
- 快速排序(分治)
- 071day(求排列的逆序数的解决和分治例题(最长公共子序列)的学习)
- 算法(分治)合并排序和快速排序
- 快速排序(分治法)
- 快速排序(分治法)
- 快速排序(分治算法)
- 算法之分治思想和快速排序
- 快速排序 : 分治和递归思想
- 排序算法--快速排序(分治法)
- 【排序】例题:小哼买书(桶排序、冒泡排序、快速排序)
- 例题 2.8 快速排序
- 分治与递归(二)--- 快速排序
- 分治算法二(快速排序)
- 分治算法三(随机化快速排序)
- 快速排序(分治法实现)
- 快速排序(分治法O(nlogn))
- Java实现快速排序(分治法)
- Eclipse/Myeclipse 中字符编码设置修改
- Linux 系统 安装 phpMyAdmin
- 留档正向代理和反向代理
- 《剑指offer》刷题笔记(知识迁移能力):平衡二叉树
- Tensorflow object detection API 源码阅读笔记:基本类(1)
- 063day(快速排序和分治例题)
- python量化分系列之---使用tushare获取股票实时分笔数据延时有多大
- IT的道德与伦理
- org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession. ### Cause: org.ap
- 在自定义控件中启动一个活动时出现的undefin的错误问题
- 学编程需要注意什么?
- 怎么通过反卷积生成和原始图像一样大小的图像? | 社区问答
- PM2实用入门指南
- 深度学习之星(二):GAN之图像转换 | 公开课