首页 > 编程语言 >java数组从小到大排序_排序算法--冒泡排序(Java语言) 冒泡排序是一种简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把

java数组从小到大排序_排序算法--冒泡排序(Java语言) 冒泡排序是一种简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把

时间:2022-11-02 12:33:10浏览次数:80  
标签:arr 元素 算法 冒泡排序 length 排序

java数组从小到大排序_排序算法--冒泡排序(Java语言)
冒泡排序是一种简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成

9a04ef5a66a3fd8eb6f4441a1261d718.png

冒泡排序(Bubble Sort)是啥?

来源百度百科:
冒泡排序是一种简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。

通俗理解

简单的说,如果我们想将一个数组从小到大排列,我们可以这样做:
1.首先可以将数组的最大值移动到最后面。
2.再将次大值移动到倒数第二位。
3.以此类推,直到将所有数排列好。

那冒泡排序是怎么实现上述操作的呢?我们来看下算法描述

算法描述

假设我们有数组arr
1.令j为0,arr[j]和arr[j+1]比较,使这两个元素的较大值在排在后面,即若arr[j]>arr[j+1],两数交换位置,若arr[j]<arr[j+1],不换。

2.不管换与不换,j++。

3.此时的arr[j]和arr[j+1]再进行比较,重复上述操作直到j=arr.length-1(这是整个排序过程的第一轮排序,即将整个数组中的最大值移动到最后面,所以这一轮排序是在j=arr.length-2的时候停止)

4.第一轮结束后我们接着进行第二轮,即将次大值移动到数组的倒数第二个位置。那么这一轮结束的标志就是j=arr.length-3

5.接着进行第三轮,第四轮...直到第二小的数排好序(你想啊,我们将其他数都排好了,最后一个肯定就是最小值啦)所以我们一共要进行arr.length-1轮排序。

6.每一轮排序结束的标志是j=arr.length-1-i。

动图演示

图片来源网络,侵删

345b215ce31dbfdb6d359cab3e818dcb.gif

代码实现

  1. public class BubbleSort {
  2. public static void main(String[] args) {
  3. int[] arr = new int[] { 2, 8, 7, 9, 4, 1, 5, 0 };
  4. bubbleSort(arr);
  5. }
  6. public static void bubbleSort(int[] arr) {
  7. //控制多少轮
  8. for (int i = 1; i < arr.length; i++) {
  9. //控制每一轮的次数
  10. for (int j = 0; j <= arr.length -1 - i; j++) {
  11. if (arr[j] > arr[j + 1]) {
  12. int temp;
  13. temp = arr[j];
  14. arr[j] = arr[j + 1];
  15. arr[j + 1] = temp;
  16. }
  17. }
  18. }
  19. System.out.println(Arrays.toString(arr));
  20. }
  21. }

以上就是我个人对冒泡排序的一些理解,如果有错误的地方欢迎大家指正我的公众号:Java小部落

我的个人博客:http://www.fangjiaxian.cn

https://blog.csdn.net/weixin_28914869/article/details/112082116

标签:arr,元素,算法,冒泡排序,length,排序
From: https://www.cnblogs.com/sunny3158/p/16850635.html

相关文章

  • MySQL_排序查询
    语法(执行顺序)Select查询列表         ③From表       ①【where筛选条件】         ②Orderby排序列表【asc|de......
  • 基础算法篇——归并排序
    基础算法篇——归并排序本次我们介绍基础算法中的快速排序,我们会从下面几个角度来介绍快速排序:归并排序思想归并排序代码归并排序拓展归并排序思想我们首先来介绍......
  • 基础算法篇——快速排序
    基础算法篇——快速排序本次我们介绍基础算法中的快速排序,我们会从下面几个角度来介绍快速排序:快速排序介绍暴力求解算法快速排序算法快速排序代码快速排序问题快......
  • 行内元素&块级元素的水平垂直居中方法
    今天实习面试的时候,问到了这个问题,一时间只是知道块元素的方法,行内的方法知道但是觉得那是控制文字的显示方法,犹豫没有说。面试官接着就问了我行内元素跟块级元素的区......
  • li标签设置inline-block后元素间产生间隙
    参考文章li与li之间设置display:inline-block;后有看不见的空白间隔如何形成的,相应的解决办法1.问题描述当使用li作为导航栏时,通常需要将li设置为一行显示,其......
  • 基数排序
    基数排序基数排序(桶排序)介绍:基数排序(radixsort)属于“分配式排序”(distributionsort),又称“桶子法”(bucketsort)或binsort,顾名思义,它是通过键值的各个位的值,将要......
  • 数据结构 二叉排序树的代码实现
    7.8、二叉排序树(BST)二叉排序树又称二叉查找树左子树上所有结点的值都小于根结点的值右子树上所有结点的值都大于根结点的值左子树和右子树又是一颗二叉排序树左子树......
  • Java实现优化版【快速排序】+四度优化详解
    参考书目:《大话数据结构》一:快速排序1.基本思想:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续......
  • 数据结构中的七大排序算法—2
        今天为大家带来的是数据结构中的七大排序算法的其中两种:希尔排序和堆排序。本次的代码实现还是使用的C语言,编译器还是vs2013版本,希望接下来的内容可以帮助大家理......
  • HTML标签中可替换元素和不可替换元素
    问题:img标签属于什么元素?面对这个问题,可能很多小伙伴们会脱口而出:“行内元素”。其实它属于可替换元素。有可替换元素,那肯定就有非可替换元素。下面我们来了解一下可替换......