用Java 写一个冒泡排序

用Java 写一个冒泡排序冒泡排序几乎是个程序员都写得出来,但是面试的时候如何写一个逼格高的冒泡排序却不是每个人都能做到,下面提供一个参考代码:importjava.util.Comparator;/***排序器接口(策略模式:将算法封装到具有共同接口的独立的类中使得它们可以相互替换)*/publicinterfaceSorter{ /** *排序 *@paramlist待排序的数组 */ public<TextendsComparable<T>>voids

大家好,又见面了,我是你们的朋友全栈君。

冒泡排序几乎是个程序员都写得出来,但是面试的时候如何写一个逼格高的冒泡排序却不是每个人都能做到,下面提供一个参考代码:

import java.util.Comparator;
/** * 排序器接口(策略模式: 将算法封装到具有共同接口的独立的类中使得它们可以相互替换) */

public 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);
}


import java.util.Comparator;
/** * 冒泡排序 */
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;
					}
				}
			}
		}
	}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156362.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 在html 中怎么将超链接分别设置样式,html中局部超链接样式设置怎么弄?[通俗易懂]

    在html 中怎么将超链接分别设置样式,html中局部超链接样式设置怎么弄?[通俗易懂]满意答案朝雾中的晨夕推荐于2017.09.12采纳率:45%等级:12已帮助:8531人a.two:link{color:#CC99CC;text-decoration:none}a.two:visited{color:#FF0000;text-decoration:none}a.two:hover{color:#606060;text-decoration:…

    2022年7月19日
    14
  • CAP原理和数据高可用性

    CAP原理和数据高可用性对网站而言,数据是最宝贵的资源,硬件可以购买,软件可以重构,但是数据(用户数据,交易数据,商品数据)一旦丢失,对网站的打击可以说是毁灭性的。数据高可用性数据高可用性包括如下几个方面的含义数据持久性保证数据可以持久存储,在各种情况下都不会出现数据丢失。为了实现数据持久性,不但在写入数据是需要写入持久性存储,还需要将数据备份到一个或多个副本,存放在不同的物理存储设备上,在某个存储故障发生是,数据不会丢失

    2022年5月12日
    45
  • 【RPC Dubbo】dubbo负载均衡策略

    【RPC Dubbo】dubbo负载均衡策略文章目录前言参考前言在上一篇博客中,介绍了zookeeper作为dubbo的注册中心是如何工作的,有一个很重要的点,我们的程序是分布式应用,服务部署在几个节点(服务器)上,当消费者调用服务时,zk返回给dubbo的是一个节点列表,但是dubbo只会选择一台服务器,那么它究竟会选择哪一台呢?这就是dubbo的负载均衡策略了,本篇博客就来聚焦dubbo的负载均衡策略。参考dubbo负载均衡策略…

    2022年7月11日
    18
  • memset库函数「建议收藏」

    memset库函数「建议收藏」头文件:#include定义函数:void*memset(void*s,intc,size_tn);函数说明:memset()会将参数s所指的内存区域前n个字节以参数c填入,然后

    2022年8月5日
    8
  • 快速搭建个人博客——保姆级教程「建议收藏」

    文章目录序言本地网站开发工具WebStormVscode框架Hexo(强烈推荐)WordPress本地环境gitnode.jsHexo安装初始化主题样式Butterfly应用正式上线图床Butterfly配置GitHubPages配置服务器选购攻略阿里云学生专享活动专享腾讯云学生专享活动专享域名购买DNS解析添加域名添加解析记录服务器购买部署密码设定远程连接git配置安装NginxHexo配置修改备案ICP联网备案序言偶然间,看到某乎上高赞的一个问题:怎么证明下计算机专业学生的能力?问题下面呢,也是有

    2022年4月15日
    43
  • js十大算法[通俗易懂]

    js十大算法[通俗易懂]JS的十大经典算法冒泡排序(BubbleSort)冒泡排序须知:作为最简单的排序算法之一,冒泡排序给我的感觉就像Abandon在单词书里出现的感觉一样,每次都在第一页第一位,所以最熟悉。。。冒泡排序还有一种优化算法,就是立一个flag,当在一趟序列遍历中元素没有发生交换,则证明该序列已经有序。但这种改进对于提升性能来说并没有什么太大作用。。。什么时候最快(BestCases):当输入的数据已经是正序时(都已经是正序了,我还要你冒泡排序有何用啊。。。。)什么时候最慢…

    2022年6月18日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号