/**
*关于冒泡排序,从性能最低版本实现到性能最优版本实现
*/
public class BubbleSortDemo { public static void sort(int array[]) { for (int i = 0; i < array.length - 1; i++) { //通过前面和后面对比,进行两两比对,复杂度是O(n2)
for (int j = 0; j < array.length - i - 1; j++) { int temp = 0; if (array[j] > array[j + 1]) {
//先临时存放左边最大的值
temp = array[j];
//把小的内容移动到左边
array[j] = array[j + 1];
//将左边最大的值往右移动一位
array[j + 1] = temp;
}
}
}
} public static void sortV2(int array[]) { for (int i = 0; i < array.length - 1; i++) { //有序标记,每一轮的初始值都是true
boolean isSorted = true; for (int j = 0; j < array.length - i - 1; j++) { int temp = 0;
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
//因为有元素进行交互,所以不是有序的,标记变为false
isSorted = false;
}
}
if (isSorted) { break;
}
} } public static void sortV3(int array[]) { //记录最后一次交换的位置
int lastExchangeIndex = 0; //无序数列的边界,每次比较只需要比到这里就可以了
int sortBorder = array.length - 1;
for (int i = 0; i < array.length - 1; i++) { //有序标记,每一轮的初始值都是true
boolean isSorted = true; for (int j = 0; j < sortBorder; j++) { int temp = 0;
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
//因为有元素进行交互,所以不是有序的,标记变为false
isSorted = false;
//更新为最后一次交换元素的位置
lastExchangeIndex = j;
}
}
sortBorder = lastExchangeIndex;
if (isSorted) { break;
}
} } public static void main(String[] args) {
// int[] array = new int[]{5, 8, 6, 3, 9, 2, 1, 7};
int[] array = new int[]{2, 1, 3, 4, 5, 6, 7, 8};
// sort(array);
sortV3(array); System.out.println(Arrays.toString(array));
}
}

冒泡排序算法JAVA实现版的更多相关文章

  1. 排序算法 Java实现版

    8种排序之间的关系: 1. 直接插入排序 (1)基本思想: 在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序 ...

  2. 经典的排序算法java实现版

    /** * * @author yuzhiping * @version 1.0 * 功能说明:计算机领域经典的算法 * */ public class sortAlgorithm<T exte ...

  3. 负载均衡各个算法JAVA诠释版

    00 前言 首先给大家介绍下什么是负载均衡(来自百科) 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展 网络设备和 服务器的带宽.增加 吞吐量.加强网络数据处理能力.提高网络的灵活 ...

  4. 交换排序---冒泡排序算法(Javascript版)

    比较相邻的元素.如果第一个比第二个大,就交换他们两个.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数.针对所有的元素重复以上的步骤,除了最后一个.持续 ...

  5. 【排序算法】冒泡排序算法 Java实现

    基本思想 设数组长度为N. 比较前后两个数据,如果前面的数据大于后面的数据,就将两个数据交换. 这样对数组的第0个数据到N - 1个数据进行遍历后,最大的一个数据就沉到了数组的第N - 1个位置. N ...

  6. 常用排序算法--java版

    package com.whw.sortPractice; import java.util.Arrays; public class Sort { /** * 遍历一个数组 * @param sor ...

  7. java:高速排序算法与冒泡排序算法

     Java:高速排序算法与冒泡算法 首先看下,冒泡排序算法与高速排序算法的效率: 例如以下的是main方法: /**   *  * @Description:  * @author:cuiyaon ...

  8. Java中数组的几个常用算法:插入算法,删除算法,冒泡排序算法

    前言: 在Java中我们常常会用数组,提到数组就不得不介绍数组中常用到的几个算法. 有插入算法,删除算法,冒泡排序算法等. 在学习这几个数组的算法前,我们先来了解一下关于数组一些基本知识. 数组的基本 ...

  9. 基于Java实现的冒泡排序算法

    冒泡排序是一种简单基础的排序算法,相信在大学课堂里老师已经讲过了,现在我基于Java来实现一遍. 简述 冒泡排序正如其关键词一样,杂乱的气泡经过浮动,最后大的气泡飘到了上面而小的气泡在下面,无序的元素 ...

随机推荐

  1. Linux之【GNU】、【GPL】、【linux系统组成】

    GNU,什么是GNU GNU全称:GNU's not unix GNU的重要组件(Emacs,gcc,bash,gawk等)加上自己的内核构成了GNU自己的系统--->没用 现在linux中的一 ...

  2. PyQt(Python+Qt)学习随笔:QTreeView树形视图的sortingEnabled属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTreeView树形视图的sortingEnabled属性用于控制视图中的数据是否启用按表头排序, ...

  3. Python中高级知识(非专题部分)学习随笔

    Python学习随笔:使用xlwings读取和操作Execl文件 Python学习随笔:使用xlwings新建Execl文件和sheet的方法 博客地址:https://blog.csdn.net/L ...

  4. Pentaho Report Designer 入门教程(一)

    PentahoReport Designer 入门教程 采用Pentaho Report Designer5.1版本,也是最新的版本. 一.       安装和介绍 介绍部分内容略,首先安装jdk,并 ...

  5. Jmeter添加事务

    事务 通过第三方工具或jmeter代理录制的脚本,你会发现会录制很多的子请求.比如当打开首页后, 会继续打开图片,css,其他请求等资源文件. 通常我们会剔除掉这些子请求, 但如果我需要衡量打开一个页 ...

  6. 关于utf-8编码值 [ASIS 2019]Unicorn shop

    0x00 前言 这题拿到之后有点懵,后来看了 网上的 wp 更加懵,网上大多数都是直接说 去 compart 搜thousand,然后找个大于1337 的就可以,至于为什么?基本都没有给出解答.于是乎 ...

  7. SQL Server 批量插入数据方案 SqlBulkCopy 的简单封装,让批量插入更方便

    一.Sql Server插入方案介绍 关于 SqlServer 批量插入的方式,有三种比较常用的插入方式,Insert.BatchInsert.SqlBulkCopy,下面我们对比以下三种方案的速度 ...

  8. 6、Sping Cloud Feign

    1.Spring Cloud Feign简介 (1).Fegin简介 官方文档:http://projects.spring.io/spring-cloud/spring-cloud.html#spr ...

  9. JavaScript一个一维数组变为两个一维数组

    //例如[1,2,3,4,5,6,7,8]变为[[1,2,3,4],[5,6,7,8]] var arr=[1,2,3,4,5,6,7,8]; function fixedArray(arr) { v ...

  10. 页面上下载canvas中的内容作为图片

    使用如下代码,获得Canvas图像对应的data URI,也就是平常我们所说的base64地址 var dataUrl = document.getElementById("canvasId ...