冒泡排序法是交换排序法的一种

思想:

/**
* 冒泡法排序
* 比较相邻的元素。如果第一个比第二个小,就交换他们两个。
* 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最小的数。
* 针对所有的元素重复以上的步骤,除了最后一个。
* 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

即对于数组中的每个位置都寻找相对最大的或者最小的

算法实现

package sort;public class MaoPao {/*** 冒泡法排序* 比较相邻的元素。如果第一个比第二个小,就交换他们两个。* 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最小的数。* 针对所有的元素重复以上的步骤,除了最后一个。* 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。** @param arr 需要排序的整型数组*            <p>*            <p>*            <p>*            即对于数组中的每个位置都寻找相对最大的或者最小的*/public static void maoPaoLeftMax(int[] arr) {//让左边是最大的值,右边是最小的for (int i = 0; i < arr.length - 1; i++) {for (int j = i + 1; j < arr.length; j++) {if (arr[i] < arr[j]) {//让左边最大int temp = arr[j];arr[j] = arr[i];arr[i] = temp;}}}}public static void maoPaoRightMax(int[] arr) {//让右边是最大的值,左边是最小的for (int i = 0; i < arr.length - 1; i++) {for (int j = i + 1; j < arr.length; j++) {if (arr[i] > arr[j]) {//让左边最大int temp = arr[j];arr[j] = arr[i];arr[i] = temp;}}}}public static void main(String[] args) {System.out.println("=======================");int[] arr = new int[]{1, 3, 5, 7, 9, 2, 4, 6, 8};maoPaoLeftMax(arr);for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + "     ");}maoPaoRightMax(arr);System.out.println("上面是左边最大,下面是右边最大 ");for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + "     ");}}}

输出结果:

9     8     7     6     5     4     3     2     1
上面是左边最大,下面是右边最大
1     2     3     4     5     6     7     8     9

注意事项:

第一个 for (int i =0 ;i< arr.length -1 ;i++) 一定是arr.length -1
——
第二个 for (int j=0 ; j< arr.length ; j++) 一定是arr.length

——
因为要保证第一个for有倒数第二个,而第二个for有最后一个

时间和空间复杂度

冒泡排序是一种用时间换空间的排序方法,n小时好
···
最坏情况是把顺序的排列变成逆序,或者把逆序的数列变成顺序,最差时间复杂度O(n2)只是表示其操作次数的数量级
····
最好的情况是数据本来就有序,复杂度为O(n)

Java 冒泡排序法相关推荐

  1. 1.15 Java冒泡排序法

    冒泡排序(Bubble Sort)是常用的数组排序算法之一,它以简洁的思想与实现方法而备受青睐,也是广大学习者最先接触的一种排序算法. 冒泡排序的基本思想是:对比相邻的元素值,如果满足条件就交换元素值 ...

  2. java冒泡排序法对数组进行排序

    public class test_BubbleSort {public static void main(String[] args) {//冒泡排序int[] arr = new int[]{5, ...

  3. java算法之冒泡排序法

    冒泡排序法 口诀:外层循环 0到n-1 //控制比较轮数 n 表示元素的个数内层循环 0到n-i-1 //控制每一轮比较次数两两比较做交换   冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进 ...

  4. 冒泡排序法java代码

    package 数组; import java.util.Scanner; public class 冒泡排序法 {     public static void main(String args[] ...

  5. java里冒泡排序编程案例_冒泡排序法-java案例详解

    /** * 功能:冒泡排序法 * 思想:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的排序码, * ,若发现逆序这交换,使得排序码较小的元素逐渐从后部移向前部(从下标较大的单元移 ...

  6. 冒泡排序c java c,冒泡排序,c语言冒泡排序法代码

    冒泡排序,c语言冒泡排序法代码 冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小.首字 ...

  7. 冒泡排序法(Java实现)

    冒泡排序法 ※ 冒泡排序法原理 对数组进行排序,冒泡排序法的原理就是将一组无序数组进行排序,同过把值较小的数逐渐向数组的顶部(即朝第一个元素)冒出来,就像水中的气泡上升一样.同时,值较大的数据逐渐向数 ...

  8. Java:冒泡排序法

    冒泡排序法是最基本的排序法之一,冒泡排序法的运行机制是通过循环遍历元素并调整相邻元素顺序来实现的一种简单排序方法.冒泡排序的实质是相邻两个元素比较,然后按照升序或降序调换位置. 下为降序冒泡排序的代码 ...

  9. 冒泡排序法。Java实现冒泡排序法

    前言基础: 1.冒泡排序法的时间复杂度为O(n2),空间复杂度为O(1),不需要额外的辅助空间.是一种稳定的排序算法. 2.冒泡实质是不断两两比较,一旦两个相邻的元素是逆序的,就会交换这两个元素的位置 ...

最新文章

  1. iphone系统更新 3002错误
  2. 服务器监控软件ZABBIX
  3. 心得体悟帖---13、编程和学习同时进行
  4. EOS开发步骤(1) 开发说明
  5. cmd编译运行Java文件详解
  6. bzoj5017 [Snoi2017]炸弹
  7. 客户端与服务器之间通信收不到信息——readLine()
  8. CURL的学习和应用
  9. [从零学习汇编语言] - 计算机发展历史
  10. 论文中的i.e.等简写
  11. 泰坦尼克:机器从灾难中学习_用于灾难响应的机器学习研究:什么才是好的论文?...
  12. matlab半小提琴图,【画图专题】小提琴图vioplot
  13. NOIP 2017 游记
  14. UDS诊断故障码及诊断服务介绍(14h, 19h, 85h)
  15. spring的两大核心
  16. 软件构造Lab2总结
  17. CAD是什么?CAD制图软件功能大汇总
  18. 深度卷积神经网络中的patch
  19. 电梯卡数据分析修改延期梯控分析方法
  20. SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord)

热门文章

  1. [转载]Python中包装(wrapping)与代理(delegation)
  2. set集合关系及特点
  3. Vue 6. 列表渲染
  4. FreeNAS 简介
  5. 最常见的解决方法:error:C2059 语法错误:“using namespace”
  6. 流量变现平台市场分析报告-
  7. c++学习 | MFC —— 串口通信(四)发送数据
  8. Ubuntu 怎么创建可视化界面
  9. C语言程序设计A重点,【艾学笔记】复习重点之C语言程序设计
  10. OFDMA trigger frame