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

yizhihongxing

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
  • Flutter Dart快速排序算法示例详解

    Flutter Dart快速排序算法示例详解 介绍 快速排序是一种排序算法,其基本思想是选择一个基准元素,将数组分成两个子数组,其中一个子数组的元素都比基准元素小,另一个子数组的元素都比基准元素大。然后递归地对两个子数组进行快速排序。 实现步骤 选择一个基准元素,并将其从数组中移除。 遍历数组,将小于基准元素的元素放入一个新的左侧数组中,大于基准元素的元素放…

    算法与数据结构 2023年5月19日
    00
  • C++中二叉堆排序详解

    C++中二叉堆排序详解 什么是二叉堆排序 二叉堆是一种特殊的二叉树,它有两个特性: 根节点的键值是所有节点中最小/最大的; 对于节点i的键值一定不大/小于它的父节点i/2。 根据第二个规则,我们可以对于任何一个节点i,以i为根的子树都是一个小根堆/大根堆。将二叉堆中最小/最大的根节点取出,然后将最后一个节点放到根位置,再对根节点进行一次向下调整的操作,就可以…

    算法与数据结构 2023年5月19日
    00
  • C++ 基本算法 冒泡法、交换法、选择法、实现代码集合

    C++ 基本算法 冒泡法、交换法、选择法 在编程中,基本算法是非常重要的。本文将介绍C++中基本算法的三种实现方式:冒泡排序、交换排序、选择排序,并附上相应的实现代码集合以及示例说明。 冒泡排序 冒泡排序,顾名思义,就像水中的气泡一样,从底部慢慢上升。在排序过程中,每次比较相邻两个元素的大小,如果发现顺序不对,就进行交换,直到所有元素都排列好。冒泡排序的时间…

    算法与数据结构 2023年5月19日
    00
  • C语言冒泡排序算法代码详解

    下面是“C语言冒泡排序算法代码详解”的完整攻略: 1. 冒泡排序算法原理 冒泡排序是一种基础的排序算法,其基本思想是将待排序的数组中的相邻元素两两比较,如果前面的元素大于后面的元素,则交换它们的位置,直到比较完所有元素。这样一轮比较交换之后,最大(或最小)的元素会被放到最后(或最前),然后再对剩下的元素重复以上步骤,直到所有元素都排好序为止。 2. 冒泡排序…

    算法与数据结构 2023年5月19日
    00
  • 归并排序时间复杂度过程推导详解

    归并排序时间复杂度过程推导详解 什么是归并排序 归并排序是一种基于分治思想的排序算法,将一个无序的数组划分成若干子数组,对每个子数组进行排序,然后再将排好序的子数组进行合并,最终得到一个完整有序的数组。 归并排序的时间复杂度 归并排序的时间复杂度是O(nlogn),其中n表示数组的长度。接下来我们将详细讲解归并排序的时间复杂度推导过程。 假设有一个长度为n的…

    算法与数据结构 2023年5月19日
    00
  • Go语言展现快速排序算法全过程的思路及代码示例

    这里是关于“Go语言展现快速排序算法全过程的思路及代码示例”的详细攻略。 什么是快速排序算法 快速排序算法是一种基于比较的排序算法,它通过选择一个基准元素,将数组分为两部分然后递归地对这两部分进行排序,最终完成对整个数组的排序。快速排序算法的时间复杂度为 O(nlogn) 平均情况下,但是在最坏情况下会退化为 O(n^2)。 快速排序算法的实现思路 下面是快…

    算法与数据结构 2023年5月19日
    00
  • PHP实现批量检测网站是否能够正常打开的方法

    以下是详细讲解“PHP实现批量检测网站是否能够正常打开的方法”的完整攻略: 步骤一:获取待检测的网站列表 首先我们需要准备一个文本文件,里面包含了我们需要检测的网站列表。每一行应该包含一个网站的URL地址,如下所示: https://www.google.com http://www.baidu.com http://www.github.com 注意:每个…

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