Java冒泡排序法和选择排序法的实现

Java的冒泡排序法和选择排序法都是常用的排序算法,冒泡排序法和选择排序法的原理都很简单,但是实现方法有一些区别。

冒泡排序法

冒泡排序法的原理是通过不断交换相邻的元素,比较他们的大小,将大的数不断上移或者将小的数下移,直到整个序列排好顺序。

以下是Java实现冒泡排序法的代码:

public class BubbleSort {
    public static void main(String[] args) {
        int[] arr = {10, 8, 6, 4, 2, 1};
        int temp = 0;
        for(int i=0; i<arr.length-1; i++){//外层循环控制排序趟数
            for(int j=0; j<arr.length-i-1; j++){//内层循环控制每一趟排序次数
                if(arr[j]>arr[j+1]){
                temp = arr[j+1];
                arr[j+1] = arr[j];
                arr[j] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

代码解释:

  • 外层循环控制排序趟数,长度为n的数组进行n-1趟排序。
  • 内层循环控制每一趟排序次数,判断相邻的两个数字,如果前者比后者大,则进行交换。
  • 运用Arrays的toString方法输出。

示例:

public class ExampleOne {
    public static void main(String[] args) {
        int[] arr = {3,6,8,2,4,1,9,5};
        System.out.print("原序列:");
        System.out.println(Arrays.toString(arr));
        sort(arr);
        System.out.print("排序后:");
        System.out.println(Arrays.toString(arr));
    }
    // 冒泡排序法
    static void sort(int[] arr){
        int temp;
        for (int i = 0; i < arr.length-1; i++) {//控制排序趟数
            for (int j = 0; j < arr.length-i-1; j++) {//控制每一趟排序次数
                if (arr[j] > arr[j+1]){
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
    }
}

输出结果:

原序列:[3, 6, 8, 2, 4, 1, 9, 5]
排序后:[1, 2, 3, 4, 5, 6, 8, 9]

选择排序法

选择排序法的原理是每一趟找到一个最小数,放在数组的最前面或最后面。

以下是Java实现选择排序法的代码:

public class SelectionSort {
    public static void main(String[] args) {
        int[] arr = {10, 8, 6, 4, 2, 1};
        int temp = 0;
        int minIndex = 0;
        for(int i=0; i<arr.length-1; i++){//外层循环控制排序趟数
            minIndex = i;
            for(int j=i+1; j<arr.length; j++){//内层循环控制每一趟排序次数
                if(arr[j]<arr[minIndex]){
                    minIndex = j;
                }
            }
            if(i != minIndex){
                temp = arr[minIndex];
                arr[minIndex] = arr[i];
                arr[i] = temp;
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

代码解释:

  • 外层循环控制排序趟数,长度为n的数组进行n-1趟排序。
  • 内层循环控制每一趟排序次数,找出最小的数的位置。
  • 如果最小的数不在第一个位置,则进行交换。
  • 运用Arrays的toString方法输出。

示例:

public class ExampleTwo {
    public static void main(String[] args) {
        int[] arr = {3,6,8,2,4,1,9,5};
        System.out.print("原序列:");
        System.out.println(Arrays.toString(arr));
        sort(arr);
        System.out.print("排序后:");
        System.out.println(Arrays.toString(arr));
    }
    // 选择排序法
    static void sort(int[] arr){
        int minIndex;
        int temp;
        for (int i = 0; i < arr.length-1; i++) {//控制排序趟数
            minIndex = i;
            for (int j = i+1; j < arr.length; j++) {//控制每一趟排序次数
                if (arr[j] < arr[minIndex]){
                    minIndex = j;
                }
            }
            if(minIndex != i){
                temp = arr[i];
                arr[i] = arr[minIndex];
                arr[minIndex] = temp;
            }
        }
    }
}

输出结果:

原序列:[3, 6, 8, 2, 4, 1, 9, 5]
排序后:[1, 2, 3, 4, 5, 6, 8, 9]

以上是Java冒泡排序法和选择排序法的实现的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java冒泡排序法和选择排序法的实现 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • javascript中可能用得到的全部的排序算法

    Javascript中可能用得到的全部排序算法 在JavaScript中,排序算法是非常常见和重要的。因为在编写程序时,我们经常需要对数组、集合等数据结构进行排序操作。接下来,我将按照常用的一些排序算法逐一介绍。 冒泡排序(Bubble Sort) 冒泡排序是一种简单的交换排序算法。它通过相邻两个元素的比较和交换来排序。每一轮比较都会将最大的元素沉到最底部。…

    算法与数据结构 2023年5月19日
    00
  • JavaScript算法学习之冒泡排序和选择排序

    JavaScript算法学习之冒泡排序和选择排序 冒泡排序和选择排序是常见的两种排序算法。在本文中,我们将详细讲解这两种排序算法,并提供代码示例供读者参考。 冒泡排序 冒泡排序是一种简单的排序算法,它通过比较相邻两个元素的大小,依次将最大的元素冒泡到数组的末尾。 以下是冒泡排序的代码示例: function bubbleSort(array) { const…

    算法与数据结构 2023年5月19日
    00
  • Go语言实现常用排序算法的示例代码

    本文将详细介绍如何使用Go语言实现常用排序算法的示例代码。主要内容包括: 排序算法介绍 排序算法示例代码 算法测试 排序算法介绍 排序算法是计算机科学基本的算法,其目的是将一组数据按照特定的规则进行排序。常用的排序算法包括冒泡排序、选择排序、插入排序、归并排序和快速排序等。以下是每种算法的简单介绍: 冒泡排序:重复比较相邻的两个元素,将较大的元素向后移动,最…

    算法与数据结构 2023年5月19日
    00
  • Java中自然排序和比较器排序详解

    Java中自然排序和比较器排序详解 简介 Java中排序分为自然排序和比较器排序两种方式。当对象包含了Comparable接口实现的compareTo方法时,便支持了自然排序。而比较器排序则需要自己实现一个Comparator接口,并传入调用方法中。本文将从以下几个方面详细介绍这两种排序方式: Comparable接口及compareTo方法 Compara…

    算法与数据结构 2023年5月19日
    00
  • 修复IE9&safari 的sort方法

    修复IE9和Safari的sort()方法需要遵循以下步骤: 1. 检查代码 要修复排序方法,首先需要检查代码,找出可能存在的问题。请确保你的代码中使用的是正确的sort()方法,并且没有拼写错误和语法问题。同时,还要检查你的代码能否适用于所有浏览器。 2. 自定义排序方法 当浏览器不支持sort()方法时,我们可以自定义一个排序方法来替代它。我们可以使用J…

    算法与数据结构 2023年5月19日
    00
  • JS实现常见的查找、排序、去重算法示例

    JS实现常见的查找、排序、去重算法示例 在 JavaScript 中,常见的算法题目也非常多,其中最常见的算法大致可以分为三类,即查找、排序和去重。在这里将对这三个方面中比较常用的算法进行一一解析,以期能够帮助大家更好的理解和掌握这些算法的使用。 一、查找 1. 二分查找 在排序好的数组中查找一个值,如何快速地找到这个值呢?这时候可以使用二分查找算法。它的原…

    算法与数据结构 2023年5月19日
    00
  • JS排序之冒泡排序详解

    JS排序之冒泡排序详解 简介 冒泡排序是最基本,也是最容易实现的排序算法之一。它的基本思想是通过多次循环遍历数组,每次比较相邻两个元素的大小,如果发现顺序不对,就交换它们的位置,通过多次遍历和交换的操作,最终使得整个数组变得有序。 基本思路 遍历数组,将相邻元素的大小进行比较,如果前面元素大于后面元素,则交换它们的位置; 继续以相同的方式遍历数组,直到数组中…

    算法与数据结构 2023年5月19日
    00
  • C++ 实现桶排序的示例代码

    下面是一份详细的攻略,带有示例说明。 桶排序简介 桶排序是一种基于计数的排序算法。它将一些数据分到不同的桶里,再对每个桶中的数据进行排序,最后按照桶的顺序依次输出所有数据,即可得到排好序的序列。 桶排序的时间复杂度是 $O(n)$,空间复杂度也是 $O(n)$,适用于元素值分布比较均匀的数据。 C++ 桶排序示例 下面是一份 C++ 实现桶排序的示例代码: …

    算法与数据结构 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部