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日

相关文章

  • c++冒泡排序详解

    c++冒泡排序详解 本文将对c++中的冒泡排序算法进行详解,并提供两个示例以方便读者理解。 冒泡排序的原理 冒泡排序算法通过不断比较相邻两个元素的大小,如果发现顺序不对就交换它们的位置,经过一次比较后就能确定一个元素的最终位置,再对剩余未排序的元素重复进行相同的操作,直到所有元素按照大小顺序排列完成。它的名字“冒泡”的意思即为像水泡一样,大的元素会一步一步向…

    算法与数据结构 2023年5月19日
    00
  • JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】

    JavaScript数据结构与算法之基本排序算法定义与效率比较 概述 排序是计算机科学中最常见的操作之一,是将数据按照一定的顺序重新排列的过程。排序算法被广泛应用于搜索、数据压缩、数据库等领域。JavaScript中常用的基本排序算法有3种:冒泡排序、选择排序和插入排序。本文将详细介绍这三种算法的原理、JavaScript实现以及时间复杂度比较。 冒泡排序 …

    算法与数据结构 2023年5月19日
    00
  • 算法系列15天速成 第一天 七大经典排序【上】

    我会为你详细讲解“算法系列15天速成 第一天 七大经典排序【上】”的完整攻略。 标题 算法系列15天速成 第一天 七大经典排序【上】 内容 本文主要介绍了常用的七大经典排序算法,分别是插入排序、希尔排序、选择排序、冒泡排序、快速排序、归并排序以及堆排序。对每个算法的特点、实现过程和时间复杂度进行了详细的讲解,同时也对每个算法进行了简单的示例说明。 插入排序 …

    算法与数据结构 2023年5月19日
    00
  • C语言常见排序算法之交换排序(冒泡排序,快速排序)

    交换排序主要有两种:冒泡排序和快速排序。下面我将分别详细介绍这两种排序算法的原理、过程和示例。 冒泡排序 原理 冒泡排序是一种基本的排序方法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。重复操作直到排序完成。 过程 冒泡排序的过程可以被描述如下: 比较相邻的元素。如果第一个比第二个大,就交换它们两个。 对每一对相邻元素做…

    算法与数据结构 2023年5月19日
    00
  • C语言之直接插入排序算法的方法

    C语言直接插入排序算法的方法 什么是直接插入排序 直接插入排序,是一种应用最广泛的排序算法之一,也是一种稳定的排序算法。它的基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的有序表。具体的过程是将待排序的元素插入到已经排好序的元素中,使插入后仍保持有序。 代码实现 下面是用C语言实现直接插入排序算法的代码: void direct_insert…

    算法与数据结构 2023年5月19日
    00
  • 算法之排序算法的算法思想和使用场景总结

    算法之排序算法的算法思想和使用场景总结 一、引言 排序算法是计算机科学基础中的一个重要的部分。随着数据规模的增大,如何高效地对数据进行排序也成为了计算机科学中的重要问题。各种排序算法针对不同的数据结构和数据规模,具有不同的时间和空间复杂度。通过了解不同的排序算法的算法思想和使用场景,可以帮助我们更好地选择合适的排序算法。 二、排序算法的分类 常见的排序算法可…

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

    C语言5个常用的排序算法实例代码 本文旨在讲解C语言中常用的5种排序算法,包括冒泡排序、选择排序、插入排序、快速排序和归并排序。以下将逐一介绍它们的实现过程,并提供示例代码。 冒泡排序(Bubble Sort) 算法思想:冒泡排序是一种简单的排序算法,它会首先比较相邻的元素,如果它们的顺序不正确,就交换它们的位置。这样一遍比较下来,最后一个元素就已经是最大的…

    算法与数据结构 2023年5月19日
    00
  • 冒泡排序算法及Ruby版的简单实现

    冒泡排序是一种比较简单的排序算法,其基本思想是重复地遍历数列,每次比较相邻的两个元素,如果前一个元素比后一个元素大,则交换这两个元素的位置,直到遍历完整个数列,这样一次遍历后,数列中最大的元素就被排到了最后面。重复执行此过程,直到整个数列有序为止。 以下是冒泡排序算法的Ruby版简单实现: def bubble_sort(array) n = array.l…

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