import java.util.Random;public class BubbleSort {private BubbleSort() {}public static <E extends Comparable<E>> void Sort(E[] arr) {// 每次循环把最大元素放在arr[i]的位置for (int i = arr.length - 1; i > 0;) {// 最后一次交换元素的位置int lastSwappedIndex = 0;// 遍历arr[0, i)遇到逆序对则交换位置for (int j = 0; j < i ; j++) {if (arr[j].compareTo(arr[j+1]) > 0) {swap(arr, j, j + 1);// 更新最后交换的元素的索引lastSwappedIndex = j + 1;}}// 将i的值变更为最后交换的元素的索引// 因为lastSwappedIndex之后的元素都没发生交换 说明他们已经排好序了 无需进行遍历// 例如lastSwappedIndex = 0 则此次数组从没发生过交换操作 其意义为这个数组已经是个排序好的数组了// 则可以直接结束循环i = lastSwappedIndex - 1;}}private static <E> void swap(E[] arr, int i, int j) {E temp = arr[i];arr[i] = arr[j];arr[j] = temp;}public static void main(String[] args) {// 创建一个数组大小为n的随机数组int n = 10000;Random rnd = new Random();Integer[] arr = new Integer[n];for (int i = 0; i < n; i++) {arr[i] = rnd.nextInt(n);}// 记录BubbleSort排序消耗的时间long startTime = System.nanoTime();BubbleSort.Sort(arr);long endTime = System.nanoTime();// 检查是否排序正确(从小到大排序)  如果不正确则抛出异常for (int i = 0; i + 1 < n; i++) {if (arr[i] > arr[i + 1])throw new IllegalArgumentException("sort failed");}// 输出Bubble排序消耗时间double time = (endTime - startTime) / 1000000000.0;System.out.println("Bubble time sort arr.length = " + n + " time = " + time);}
}

Bubble排序 并进行优化相关推荐

  1. 算法基础-十大排序算法及其优化(文末有抽奖福利哦)

    算法基础-十大排序算法及其优化 算法基础-十大排序算法及其优化 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kw1LA5Q4-1607527572080)(/uplo ...

  2. C语言实现冒泡排序(bubble排序)算法(附完整源码)

    冒泡排序bubble排序算法 冒泡排序(bubble排序)算法的完整源码(定义,实现,main函数测试) 冒泡排序(bubble排序)算法的完整源码(定义,实现,main函数测试) #include ...

  3. 多目标优化算法:基于非支配排序的瞪羚优化算法(Non-Dominated Sorting Gazelle Optimization Algorithm,NSGOA)

    瞪羚优化算法(Gazelle Optimization Algorithm,GOA)由Agushaka等人于2022年提出,该算法模拟了瞪羚逃避捕食者的行为,思路新颖,性能高效. 瞪羚的身高60-11 ...

  4. 多目标优化算法:非支配排序的鲸鱼优化算法(Non-Dominated Sorting Whale Optimization Algorithm,NSWOA)提供Matlab代码

    一.非支配排序的鲸鱼优化算法 非支配排序的鲸鱼优化算法(Non-Dominated Sorting Whale Optimization Algorithm,NSWOA)由Pradeep Jangir ...

  5. 多目标优化算法:基于非支配排序的蜣螂优化算法(Non-Dominated Sorting Dung beetle optimizer,NSDBO)

    蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球.跳舞.觅食.偷窃和繁殖行为的启发所得. 一.蜣螂优化 ...

  6. 图解选择排序算法及优化

    作者:敲代码の流川枫 博客主页:流川枫的博客 专栏:和我一起学java 语录:Stay hungry stay foolish 工欲善其事必先利其器,给大家介绍一款超牛的斩获大厂offer利器--牛客 ...

  7. 排序--Bubble的三种优化

    BubbleSort      冒泡排序是许多人接触的第一种排序方式,由于这种方式比较简单,所以大部分人也没有深入研究,所以写出的代码是这样的: void BubbleSort(int *arr, i ...

  8. 十六、希尔排序即其优化(交换法--->移动法)

    一.为何要引入希尔排序 首先先看直接插入排序所存在的弊端,数组 arr = {2,3,4,5,6,1},如果要插入的数1(最小),这样的过程是: {2,3,4,5,6,6} {2,3,4,5,5,6} ...

  9. 【数据结构】排序算法及优化整理

    排序算法 排序算法 选择排序 Selection Sort 插入排序 Insertion Sort 归并算法 Merge Sort 快速排序 Quick Sort 堆排序 Heap Sort 二叉堆的 ...

最新文章

  1. Laravel 查询某天数据 whereDate
  2. php维护页面,php – Symfony2中的“维护网站”页面
  3. 计算机网络ppt_计算机网络--女娲补天
  4. hdu 5288 OO’s Sequence(计数)
  5. 离散数学-欧拉图和哈密顿图
  6. 利用讯飞语音听写接口实现实时语音转写。
  7. 小程序列表倒计时使用wxs实现
  8. 百度 嵌入式Linux软件研发工程师面试记录
  9. 主流Paas云平台架构设计思想
  10. 如何搭建云进销存-销售管理系统?
  11. Xcode的一种编译问题:Error: building could produce unreliable results
  12. BMI指数(Body Mass Index身体质量指数),简称体质指数又称体重指数,BMI值是根据你的身高、体重按照一定的公式得出数值,是一个衡量你身体健康的参数。
  13. [程序人生]--人生架构三个层次:智慧是大脑,选择是躯干,知识文化是血肉
  14. java的无极分类,ThinkPHP菜单无极分类实例讲解
  15. 娄底高通量测序实验室设计原则探讨
  16. matlab 小红点怎么标,三边测量法定位,matlab仿真 请大侠调试一下,谢谢
  17. java路径是什么意思_java路径是什么意思
  18. 【go】golang中置new()函数和make()函数的区别
  19. 2018 iPad pro 11停用,DFU模式刷机指南
  20. 开源创业者必读:Kong从明星开源项目进化为独角兽的商业化路径

热门文章

  1. 阳振坤:分布式技术引领关系数据库发展
  2. 有关软件测试的精品课程网站
  3. 初中八年级认识计算机说课稿,《认识计算机》教案说课稿
  4. 如何监听HH660型号扫码枪并输出中文
  5. 浏览器内核及内核介绍
  6. 如果你爱的人不再爱你,请放开自己
  7. 一篇文章学会RabbitMQ。SpringAMQP操作RabbitMQ。RabbitMQ五种模式及其代码实现。
  8. 2020年Android面试笔试总结(Android精心整理篇),kotlin常量
  9. 服务器修复英文怎么写,修复英文(修复怎么翻译)
  10. 计算机毕业设计PHP的高校车辆租赁管理系统(源码+程序+VUE+lw+部署)