冒泡排序法——Java实现

作者: xieys | 来源:发表于2017-03-04 19:49 被阅读102次

算法描述

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。(百度百科)

算法原理

  1. 两个相邻的元素相比较,若第一个比第二个大,就进行交换
  2. 第二个和第三个元素重复第一步的工作,直到与最后一个元素比较完,完成后最后一个元素就是最大的那个
  3. 重复上述两个步骤,直到全部元素比较完。

算法实现

这里我以Java中的数组为例,来具体实现下冒泡排序

假设数组为 arr={34,42,78,12,3},利用冒泡排序法將数组进行排序。

第一步
  1. 数组第一个数与第二数进行比较,即 arr[0]=34 与 arr[1]=42 比较,42大于34,所以不交换。数组为arr={34,42,78,12,3}
  2. 数组第二个数与第三数进行比较,即 arr[1]=42 与 arr[2]=78 比较,78大于42,所以不交换。数组为arr={34,42,78,12,3}
  3. 数组第三个数与第四数进行比较,即 arr[2]=78 与 arr[3]=12 比较,78大于12,所以进行交换。数组为arr={34,42,12,78,3}
  4. 数组第四个数与第五数进行比较,即 arr[3]=78 与 arr[4]=3 比较,78大于3,所以进行交换。数组为arr={34,42,12,3,78}
代码实现
for (int x = 0; x < arr.length - 1; x++) {
    if (arr[x] > arr[x + 1]) {
        int temp = arr[x];
        arr[x] = arr[x + 1];
        arr[x + 1] = temp;
    }
}

注意:代码实现时容易造成数组越界,所以 for 循环的判断条件是 x < arr.length - 1

第二步

重复第一步工作,但最后不需要与前面比较过的元素在进行比较,所以需要比较的次数逐渐减少。

代码实现
for (int x = 0; x < arr.length - 2; x++) {
        if (arr[x] > arr[x + 1]) {
            int temp = arr[x];
            arr[x] = arr[x + 1];
            arr[x + 1] = temp;
        }
    }

注意:第二次比较时,不需要与第一步比较的元素再进行比较,所以 for 循环的判断条件是 x < arr.length - 2

重复上述两个步骤,直到数组比较完成。

代码优化

由上述实现代码发现,比较的过程都是相同的,只是后一步所需比较的步数比前一步少一。所以可以用 for 循环將代码优化,具体代码如下:

for (int x = 0; x < arr.length; x++) {
        for (int y = 0; y < arr.length - 1 - x; y++) {
            if (arr[y] > arr[y + 1]) {
                int temp = arr[y];
                arr[y] = arr[y + 1];
                arr[y + 1] = temp;
            }
        }
    }

完整代码请访问:https://github.com/xieys 欢迎Follow和star

相关文章

  • 冒泡排序 选择排序

    冒泡排序 java 实现 C 实现 选择排序 java 实现 C 实现

  • 算法-冒泡排序

    算 法:冒泡排序算法时间复杂度: 冒泡排序算法概述 冒泡排序伪代码 冒泡排序实现 冒泡排序算法概述 冒泡排...

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

  • Java 实现冒泡排序

    本文介绍冒泡排序原理及 Java 语言实现。 目录 冒泡排序原理 代码实现 冒泡排序原理 比较相邻的元素,升序时如...

  • java实现冒泡排序法

    插入排序 抽象排序方法 具体实现且行数最少 时空复杂度 方法一 主函数中通过BubbleSort类带参数的构造函数...

  • 冒泡排序法——Java实现

    算法描述 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,...

  • 常用排序算法的Java实现

    冒泡、插入、选择、归并、快速排序的Java实现

  • 常见排序的java实现

    常见排序的java实现 常见排序java实现 插入排序(二分插入排序) 希尔排序 快速排序(三数中值快排) 冒泡排...

  • java 实现排序算法之「选择排序」

    java 实现排序算法系列 继冒泡排序算法之后,选择排序终于和大家见面了。为什么冒泡排序之后要说选择排序呢,是因为...

  • 冒泡排序法C

    xcode冒泡排序法 下载冒泡排序。

网友评论

    本文标题:冒泡排序法——Java实现

    本文链接:https://www.haomeiwen.com/subject/tnujgttx.html