快速排序,一个爱情故事-java版
- public static void myquicksort(int[] ages,int girl,int boy){
- //这是一个站在数组两端,追求完美爱情的故事
- //年龄不匹配的不要
- //第0步
- if(girl > boy){return;}
- int perfect = ages[girl];
- int i = girl;//分身
- int j = boy;//分身
- int tmp = 0;
- //寻找的终止条件是男生的分身的位置和女生分身的位置相等
- //第四步
- while(i!=j) {
- //第一步男生的分身去寻找
- while (ages[j] >= perfect && i < j) {
- j--;
- }
- //第二步女生去找
- while (ages[i] <= perfect && i < j) {
- i++;
- }
- //此时每个分身捉了不满足条件的,然后就交换
- //第三步
- if(i<j){
- tmp = ages[i];
- ages[i] = ages[j];
- ages[j] = tmp;
- }
- }
- //第5步
- //此时可以跳出循环说明i和j在一起了,可以得到perfect了
- ages[girl] = ages[i];//把当前的值给了以前的girl
- ages[i] = perfect;//i和j得到了perfect
- //男生和女生的后代分为两支,繁衍下去
- myquicksort(ages,girl,i-1);
- myquicksort(ages,i+1,boy);
- //第五步结束
- //剧终
- }
参考http://developer.51cto.com/art/201403/430986.htm
快速排序,一个爱情故事-java版的更多相关文章
- 第一篇:微信公众平台开发实战Java版之了解微信公众平台基础知识以及资料准备
相信很多人或多或少听说了微信公众平台的火热.但是开发还是有一点门槛,鉴于挺多朋友问我怎么开发,问多了,自己平时也进行以下总结.所以下面给大家分享一下我的经验: 微信公众号是什么? 官网的介绍:再小的个 ...
- 常见排序算法总结(java版)
一.冒泡排序 1.原理:相邻元素两两比较,大的往后放.第一次完毕,最大值在最大索引处. 即使用相邻的两个元素一次比价,依次将最大的数放到最后. 2.代码: public static void bub ...
- 内部排序比较(Java版)
内部排序比较(Java版) 2017-06-21 目录 1 三种基本排序算法1.1 插入排序1.2 交换排序(冒泡)1.3 选择排序(简单)2 比较3 补充3.1 快速排序3.2 什么是桶排序3.3 ...
- 排序算法Java版,以及各自的复杂度,以及由堆排序产生的top K问题
常用的排序算法包括: 冒泡排序:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后.最将剩下的N-1个数继续比较,将次大数移至倒数第二.依此规律,直至比较结 ...
- 常见排序算法题(java版)
常见排序算法题(java版) //插入排序: package org.rut.util.algorithm.support; import org.rut.util.algorithm.Sor ...
- 剑指offer题解(Java版)
剑指offer题解(Java版) 从尾到头打印链表 题目描述 输入一个链表,按从尾到头的顺序返回一个ArrayList. 方法1:用一个栈保存从头到尾访问链表的每个结点的值,然后按出栈顺序将各个值存入 ...
- java版gRPC实战之三:服务端流
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Java版人脸检测详解下篇:编码
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- ArcGIS Server 10 Java 版的Rest服务手动配置方法
Java版的Manager中发布的服务默认只发布了该服务的SOAP接口,而REST接口需要用户在信息服务器,如Tomcat. Apache.WebLogic等中手工配置.由于在Java版的Server ...
随机推荐
- python 实验环境
python 实验环境的搭建 刚开始在windows环境下尝试过komodo ,eclispse pydev,swing,spyder甚至limodou的编辑器,之后ipython,安装很多科学计算包 ...
- 有用的 Mongo命令行 db.currentOp() db.collection.find().explain() - 摘自网络
在Heyzap 和 Bugsnag 我已经使用MongoDB超过一年了,我发现它是一个非常强大的数据库.和其他的数据库一样,它有一些缺陷,但是这里有一些东西我希望有人可以早一点告诉我的. 即使建立索引 ...
- yarn 的安装
yarn的安装方法: https://yarn.bootcss.com/docs/install.html#linux-tab
- Android 4.1的新特性介绍
原文:http://android.eoe.cn/topic/summary 果冻豆 - Android 4.1 通知系统 - Notifications 在Android 4.1系统上通知的功能大大 ...
- Ubuntu java install & config
im:http://jingyan.baidu.com/article/08b6a591cb06f114a8092209.html http://www.cnblogs.com/zknublx/p/5 ...
- SVN不显示对号的解决方法
具体操作方法如下: 1.到C:\Windows文件夹下,打开regedit.exe 2.Ctrl+F,搜索“ShellIconOverlayIdentifiers” 3.将TortoiseAdded. ...
- 关于Eclipse如何加入Gradle文件与Android Studio两个平台一起开发,工作目录不发生变化
前言: 本来很久之前想弄这玩意,不过因为各种原因,所以没弄. 今天有位前辈提出需求.说想让Eclipse的Android项目逐步走向Android Studio,但是又担心Android Studio ...
- HTML5学习笔记(二十二):DOM
DOM即文档对象模型(Document Object Model),其定义了访问和操作 HTML 文档的标准方法. DOM 将 HTML 文档表达为树结构,如下: 通过DOM,开发人员可以动态的添加. ...
- 不忘初心,回归本质 .net core
static void Main(string[] args) { ; object j = i;//装箱 就是把值类型转换成引用类型 int k = (int)j;//拆箱 就是把引用类型转换成值类 ...
- oracle sql合计结果信息使用分组的小问题
--月统计 Select SUBSTR(t.BalanceDate,1,6) as Mon, t.RechargeType , SUM(t.SumNum) as SumNum , SUM(t.SumF ...