用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • LoadRunner教程(18)-LoadRunner 图表合并[通俗易懂]

    LoadRunner教程(18)-LoadRunner 图表合并[通俗易懂]分析图合并一、分析图合并原理选择view-&amp;gt;mergegraphs,弹出所示对话框1、选择要合并的图。选择一个要与当前活动图合并的图,注意这里只能选择X轴度量单位相同的图。2、选择合并类型。1)叠加:查看共用同一X轴的两个图的内容。合并图左侧的Y轴显示当前图的Y轴值,右边的Y轴显示合并进来的图的Y轴值,如图所示2)平铺:在平铺布局查看,共用同一个X轴,合…

    2022年5月10日
    47
  • c语言图书管理系统源代码_c语言图书信息管理系统

    c语言图书管理系统源代码_c语言图书信息管理系统一、目的通过设计一个图书管理系统的程序,全面运用课程的主要知识点,巩固对模块化程序设计、文件操作的理解,提高软件编程能力。二、涉及的知识点循环、分支语句、函数、数组、函数、结构体、指针、链表、文件读取操作等等三、程序已经实现的功能点(用100-200字进行说明)(1)程序具有以下功能,操作流程见下图:登录界面:输入用户名(admin)、密码(20190611),只有用户名、密码同时正确(信息存放在文件中)才能进入系统主菜单,否则需要重新输入用户名、密码。(同时输入3次错误将退出程序)。操

    2022年10月11日
    0
  • Java volatile源码分析

    Java volatile源码分析synchronized是阻塞式同步,在线程竞争激烈的情况下会升级为重量级锁,而volatile可以说是JVM提供的最轻量级的同步机制。jMM告诉我们,各个线程会将共享变量从主内存中拷贝到工作内存,然后执行引擎会基于工作内存中的数据进行操作处理。线程在工作内存进行操作后什么时候写回到主内存中,实际上没有明确的限制。而针对volatile修饰的变量给java虚拟机特殊的约定,线程对volatile变量的修改会立刻被其他线程所感知,即不会出现数据脏读,从而保证数据的一个可见性。https://blog.

    2022年7月18日
    9
  • python不同开根号速度对比[通俗易懂]

    python不同开根号速度对比[通俗易懂]Took0.152364secondsTook0.061580secondsTook1.016529secondsTook0.215403seconds

    2022年7月5日
    20
  • 测试用例模板和例子_测试用例怎么写 实例

    测试用例模板和例子_测试用例怎么写 实例编写测试用例HttpRunnerv3.x支持三种测试用例格式pytest,YAML和JSON。官方强烈建议以pytest格式而不是以前的YAML/JSON格式编写和维护测试用例格式关系如下图所示

    2022年8月6日
    1
  • wordpress被挂马_php绕过

    wordpress被挂马_php绕过注:本文仅供学习参考网页挂马简介网页挂马指的是把一个木马程序上传到一个网站里面,然后用木马生成器生成一个网马,放到网页空间里面,再加代码使得木马在打开网页时运行。网页挂马工作原理作为网页挂马的散布者,其目的是将木马下载到用户本地并进一步执行,当木马得到执行后,就意味着会有更多的木马被下载,且进一步被执行。这样就进入一个恶性的循环,从而使用户的电脑遭到攻击和控制。为达到目的首先要将木马下载到本地。常…

    2022年9月27日
    0

发表回复

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

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