冒泡排序java

news/2024/11/24 13:48:20/
  • 时间复杂度:O(n^2)
  • 若原数组本身有序,只需n-1次比较就可完成。若是倒序,比较次数为(n-1)+(n-2)+(n-3)+…1 = n(n-1)/2,交换次数和比较次数等值。
public class BubbleSort {public static <AnyType extends Comparable<? super AnyType>> void bubbleSort(AnyType[] a, int left, int right) {for (int i=0; i<a.length-1; i++) {boolean flag = true; //设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已然完成for (int j=0; j<a.length-1-i; j++) {if (a[j].compareTo(a[j+1]) > 0) {swapReferences(a, j, j+1);print(a);flag = false;}}if (flag) {break;}}}

交换方法:

public static <AnyType extends Comparable<? super AnyType>> void swapReferences(AnyType [] a, int left, int right) {AnyType tmp = a[left];a[left] = a[right];a[right] = tmp;}

http://www.ppmy.cn/news/534398.html

相关文章

1.5.5--1.5.6泛型static方法和类型限界、implement和extends的区别

1.5.5泛型static方法 编程时候使用特定类型出现以下情况&#xff1a; 1、该特定类型用做返回类型 2、该类型用在多于一个的参数类型中 3、该类型用于声明一个局部变量 必须要声明一种带有若干类型参数的显示泛型方法。 public static <AnyType> boolean contains( AnyT…

实现 LinkedList

使用 LinkedList 泛型类实现 MytLinkedList&#xff0c;以避免与库中的相关类混淆 定期整理点滴&#xff0c;完善自己&#xff0c;今后给洋哥挣钱&#xff0c;陪伴着让我的小宝贝发自内心爱上笑&#xff0c;加油吧 import java.util.ConcurrentModificationException; import j…

C++ Primer Plus书之--C++函数模版及模板重载

函数模板 函数模板允许以任意类型的方式来定义函数, 例如:可以这样建立一个交换模板(交换两个参数的数值) // 建立一个模板, 并将类型命名为AnyType, 关键字template是必须的 // 类型名AnyType可以任意选择, 只要遵守C命名规则即可. 例如T. // typename也是必须的, 但是可以用…

谈一谈个人对于java内部类的理解

谈一谈个人对于java内部类的理解 内部类分为非静态内部类和静态内部类&#xff0c;在这里我就他们在java中的应用谈一谈个人的理解 非静态内部类 非静态内部类也就是普通的内部类&#xff0c;参考ArrayList的源码&#xff0c;其中就用到了非静态内部类。 &#xff08;下面是…

【C++】第五章 模板

该文章内容整理自《C Primer Plus&#xff08;第6版&#xff09;》、《Effective C&#xff08;第三版&#xff09;》、以及网上各大博客 文章目录 函数模板类模板模板别名可变参数模板 函数模板 函数模板是通用的函数描述&#xff0c;即使用泛型来定义函数。以类型作为参数传…

oracle plsql index_by表 clear,oracle中pl/sql记录与index-by表

其他资料&#xff1a; 标量数据类型 Number系列及其子类型 Char系列及其子类型 Date等比列及其子类型 Interval系列 (oracle 9i 特有 ) Timestamp 系列 (oracle 9i 特有 ) MSLABEL 系列 复合数据类型 记录类型 (record) 、 Index-By 表 嵌套表、 Varray 对象数据类型 Object 类…

插入排序(Insertsort)之Java实现

目录(?)[] 插入排序算法介绍 排序算法是最简单的算法&#xff0c;也是最基本的算法。顾名思义&#xff0c;插入排序就是把当前待排序的元素插入到一个已经排好序的列表里面。 一个非常形象的例子就是右手抓取一张扑克牌&#xff0c;并把它插入左手拿着的排好序的扑克里面。插入…

Anyty C++DLL封装成NetDLL进行调用

Anyty CDLL封装成NetDLL进行调用 由于项目中要用到摄像头进行画面的抓拍&#xff0c;提供的C动态链接库dll.但项目使用C#进行开发的&#xff0c;需要进行二次封装。 主要涉及到两点&#xff1a; 1.C中常用的变量在C#中的映射 2.C方法在C#中的调用 3.C回调函数在C#中的调用…