冒泡排序高逼格

import java.util.Comparator;

/**
 * 排序器接口(策略模式: 将算法封装到具有共同接口的独立的类中使得它们可以相互替换)
 *
 * @author Chengpeng
 *
 */
interface Sorter {

	/**
	 * 排序
	 *
	 * @param list
	 *            待排序的数组
	 */
	public <T extends Comparable<T>> void sort(T[] list);

	/**
	 * 排序
	 *
	 * @param list
	 *            待排序的数组
	 * @param comp
	 *            比较两个对象的比较器
	 */
	public <T> void sort(T[] list, Comparator<T> comp);
}

/**
 * 冒泡排序
 *
 *
 *
 */
public class BubbleSorter implements Sorter {

	@Override
	public <T extends Comparable<T>> void sort(T[] list) {
		boolean swapped = true;
		for (int i = 1, len = list.length; i < len && swapped; ++i) {
			swapped = false;
			for (int j = 0; j < len - i; ++j) {
				if (list[j].compareTo(list[j + 1]) > 0) {
					T temp = list[j];
					list[j] = list[j + 1];
					list[j + 1] = temp;
					swapped = true;
				}
			}
		}
	}

	@Override
	public <T> void sort(T[] list, Comparator<T> comp) {
		boolean swapped = true;
		for (int i = 1, len = list.length; i < len && swapped; ++i) {
			swapped = false;
			for (int j = 0; j < len - i; ++j) {
				if (comp.compare(list[j], list[j + 1]) > 0) {
					T temp = list[j];
					list[j] = list[j + 1];
					list[j + 1] = temp;
					swapped = true;
				}
			}
		}
	}

	public static void main(String[] args) {
		Person p1 = new Person(10);
		Person p2 = new Person(20);
		Person p3 = new Person(80);
		Person p4 = new Person(40);
		Person[] list = { p1, p2, p3, p4 };
//		new BubbleSorter().sort(list, new PersonComparator());

		//or
		new BubbleSorter().sort(list, new Comparator<Person>() {

			@Override
			public int compare(Person o1, Person o2) {
				return o1.score - o2.score;
			}

		});
		for (int i = 0; i < list.length; i++) {
			System.out.println(list[i]);
		}
	}

}

class Person {
	int score;

	public Person(int score) {
		this.score = score;
	}

	public String toString() {
		return String.valueOf(this.score);
	}

}

class PersonComparator implements Comparator<Person> {

	@Override
	public int compare(Person o1, Person o2) {

		return o2.score - o1.score;
	}

}
时间: 2024-11-08 21:30:07

冒泡排序高逼格的相关文章

【转】这些JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已

[转]这些JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已 Javascript是一门很吊的语言,我可能学了假的JavaScript,哈哈,大家还有什么推荐的 本文秉承着:你看不懂是你SB,我写的代码就要牛逼. 1.单行写一个评级组件 "★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);定义一个变量rate是1到5的值,然后执行上面代码,看图 才发现插件什么的都弱爆了 2.如何装逼用代码骂别人SB (!(~+[])+{})[--[~+&qu

VopSdk一个高逼格微信公众号开发SDK:自动化生产(装逼模式开启)

VopSdk一个高逼格微信公众号开发SDK(源码下载) VopSdk一个高逼格微信公众号开发SDK:自动化生产(装逼模式开启) 针对第一版,我们搞了第二版本,老规矩先定个目标. 一 我们的目标 a.移除PayExcute,统一执行入口,目前只保留一个入口Excute b.序列化特性统一,目前只用设置xml特性即可(反序列化时xml和json都可以直接用) c.支持文件上传,目前只有多客服管理上传头像接口用到过 d.使用T4模板自动生产所有Request.Response.以及所有测试Test(装

高逼格电子工程师:给全裸花生棒带套套

极客的世界你永远都不懂,约妹子只是生活调剂,倒腾才是他们的主旋律.你万万没想到,他们眼中的另类时尚是这样的. 近日在花生壳官网(hsk.oray.com)BBS上,一篇网友DIY为全裸花生棒带套套的帖子,引发网友热议.究竟是怎么一回事,跟小编一起一探究竟吧! 先来科普一下,全裸花生棒是花生壳在去年推出的一款专供电子发烧友玩耍的低价硬件,只提供花生棒的内核芯片.主要功能和花生壳软件一样,但不再需要配置专门主机24小时运行花生壳软件,且能够内网穿透.不仅能够实现外网访问内网ERP/OA.FTP下载等

高逼格UILabel的闪烁动画效果

最终效果图如下: 源码: YXLabel.h 与  YXLabel.m // // YXLabel.h // // Created by YouXianMing on 14-8-23. // Copyright (c) 2014年 YouXianMing. All rights reserved. // #import <UIKit/UIKit.h> @interface YXLabel : UIView @property (nonatomic, strong) NSString *text

高逼格,超简单,实现App自动更新,一个方法搞定

前言 前段时间写了一个篇APP自动更新下载的文章自动更新,一个方法搞定,使用系统的DownloadManager 方法超简洁的实现了apk的下载,不过有好多网友反映有一些机型上面这个方法无法实现下载,经过小编的实验在部分机型上确实会有这个问题,所以其中下载的部分只能通过其它方法搞定了.正好看到网上好多关于使用Retrofit实现下载并且监听进度的文章,并且我一直在看Retrofit的东西但是一直没有机会用到,所以我正好拿这个练练手,最终我使用Retrofit + OkHttp + RxBus +

高逼格的实现WiFi共享,不安装第三方wifi共享软件,两种方式实现开启wifi的功能

作为一枚程序员,不会点高逼格的doc命令,那么都有点感觉对不起自己的行业了,好了废话就到这里了 第一种方式: 首先使用cmd命令:window键+R 然后输入cmd回车 第一种方式: 第一步: 设置wifi: ssid是wifi名称key是无线密码 netsh wlan set hostednetwork mode=allow ssid=name key=00000000 第二步 启动wifi: netsh wlan start hostednetwork 第三步: 关闭wifi: netsh

高逼格电子工程师:给全裸花生棒带套套

极客的世界你永远都不懂,约妹子只是生活调剂,倒腾才是他们的主旋律.你万万没想到,他们眼中的另类时尚是这样的. 近日在花生壳官网(hsk.oray.com)BBS上,一篇网友DIY为全裸花生棒带套套的帖子,引发网友热议.究竟是怎么一回事,跟小编一起一探究竟吧! 先来科普一下,全裸花生棒是花生壳在去年推出的一款专供电子发烧友玩耍的低价硬件,只提供花生棒的内核芯片.主要功能和花生壳软件一样,但不再需要配置专门主机24小时运行花生壳软件,且能够内网穿透.不仅能够实现外网访问内网ERP/OA.FTP下载等

更改linux用户名的两种方式-推荐方式二-高逼格方式三

方式一:从recovery模式进入更改用户名,解决只有一个用户但我就爱用命令改的问题 前提知识:1.了解/etc/passed文件所描述的用户信息含义,比如:代表分隔信息:/home/ycp代表用户目录 2.了解usermod命令的使用,比如-c代表更改用户描述信息(登录系统时显示的名称即描述信息) -l 表示用户名(可以和描述信息不一致)-d表示用户目录等等,使用man usermod可详细查询使用方法 第一步:进入recovery模式 1.重启长按shift进入grub菜单,要提前一点按sh

淘宝店铺装修教程之下载淘宝视频及分析视频地址中的高逼格信息

摘要: 关于淘宝视频方面的教程,艺灵已写过好几篇了,唯独没有下载的教程,然后群内小伙伴也一直问这个问题,所以特写此教程,内含信息量巨大,看官慎入...... 一.起因 还是因为刚有群友在群里问这个问题,已会的神人请无视这篇基础教程. 在讲如何下载淘宝视频之前,不得不把之前写的几篇教程拿出来,要不然那谁又该问:怎么上传淘宝视频.怎么获取淘宝视频链接.店铺中怎么安装淘宝视频.详情页中怎么放淘宝视频等等问题.如果看官对刚提的几点有疑惑,请先看完下面几篇教程文章后再回来继续看这篇文章. 二.淘宝视频相关