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#版的实现示例 1. 快速排序算法简介 快速排序算法是一种高效的排序算法,它的时间复杂度为 $O(nlogn)$。它的基本思想是通过一次划分将原问题分解为两个子问题,再对子问题进行递归解决,最终得到排序结果。 2. 快速排序算法核心思想 快速排序算法的核心思想是选取一个基准元素,将待排序的序列分成两部分,一部分比基准元素小,一部分比基…

    算法与数据结构 2023年5月19日
    00
  • C语言 实现归并排序算法

    C语言实现归并排序算法的攻略如下: 展示归并排序算法思路 先将待排序的序列拆分成若干小规模子序列,直到每个子序列可以直接排序为止。 然后对每个子序列进行排序,合并成新的有序序列。 重复第二步,直到只剩下一个排序完毕的序列。 C语言代码实现 下面是一份C语言实现归并排序算法的代码,代码内部有详细的注释,可以帮助理解代码: #include <stdio.…

    算法与数据结构 2023年5月19日
    00
  • C++超详细讲解贪心策略的设计及解决会场安排问题

    C++超详细讲解贪心策略的设计及解决会场安排问题 什么是贪心算法 贪心算法是一种近似算法,通常用于求解最优化问题。在每一步,贪心算法总是做出在当前看来最优的选择,并希望通过这样的选择最终能达到全局最优。 解决会场安排问题的贪心策略 问题描述 为了方便会议的安排,需要一个会议室来容纳所有的会议。现在有n个会议需要在会议室中安排,假设每个会议被安排在一个时间段内…

    算法与数据结构 2023年5月19日
    00
  • python KNN算法实现鸢尾花数据集分类

    Python实现KNN算法对鸢尾花数据集进行分类 介绍 KNN(K-Nearest-Neighbor)算法是一种非常常用且简单的分类算法之一。它的基本思想是把未知数据的标签与训练集中最邻近的K个数据的标签相比较,得票最多的标签就是未知数据的标签。本文将介绍如何使用Python实现对鸢尾花数据集进行KNN分类。 步骤 加载数据 首先,我们需要加载鸢尾花数据集。…

    算法与数据结构 2023年5月19日
    00
  • C语言排序方法(冒泡,选择,插入,归并,快速)

    下面是关于C语言排序方法冒泡、选择、插入、归并、快速的详细攻略: 冒泡排序 冒泡排序是一种最简单的排序算法,它的核心思想是从左到右依次比较相邻的两个元素,如果前一个元素大于后一个元素,就交换它们的位置,这样一遍比较后,最大的元素就会被“冒泡”到最右边。然后再对剩余的元素重复同样的操作,这样一直迭代直到整个序列排序完成。 下面是标准的C语言冒泡排序代码示例: …

    算法与数据结构 2023年5月19日
    00
  • 希尔排序算法的C语言实现示例

    下面是“希尔排序算法的C语言实现示例”完整攻略。 希尔排序算法简介 希尔排序是通过将整个待排序数组分割成多个子序列,对每个子序列进行插入排序,然后逐步减少子序列长度,最终使整个序列有序的一种算法。 希尔排序算法的流程 按照一定的间隔将待排序数组分成若干个子序列; 对每个子序列进行插入排序,使其中的元素可以快速有序; 缩小排序间隔,重复执行步骤1和2; 直至排…

    算法与数据结构 2023年5月19日
    00
  • C语言超详细梳理排序算法的使用

    C语言超详细梳理排序算法的使用 概述 本攻略旨在介绍C语言中常见的排序算法的实现与使用方法。排序算法是计算机科学中非常重要的一部分,它们可以对大量的数据进行快速的排序,是各类计算机系统与应用中的重要组成部分,对于编写具有高效性能的代码具有非常重要的作用。对于初学者,学习排序算法不仅可以提高编程能力,同时也是学习算法与数据结构的入门之路。 本文介绍以下常见的排…

    算法与数据结构 2023年5月19日
    00
  • JavaScript排序算法之希尔排序的2个实例

    下面我将详细讲解“JavaScript排序算法之希尔排序的2个实例”的完整攻略。 算法简介 希尔排序(Shell Sort)是插入排序的一种更高效的改进版本,也称为缩小增量排序。它通过在不断缩小步长的序列中对数据进行多轮分组插入排序来进行排序。首先将整个待排序的记录序列分割成为若干个子序列分别进行直接插入排序,待整个序列中的元素基本有序时,再对全体元素进行一…

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