冒泡排序-选择排序-插入排序-快速排序(java版实现)(上)

简介: 排序就是将输入的数字按照从小到大的顺序进行排列。由于排序是一个比较基础的问题,所以排序算法的种类也比较多。最近学习了几种常见的排序算法,下面介绍如何使用java代码实现对数组进行从下到大排序。

排序就是将输入的数字按照从小到大的顺序进行排列。由于排序是一个比较基础的问题,所以排序算法的种类也比较多。最近学习了几种常见的排序算法,下面介绍如何使用java代码实现对数组进行从下到大排序。

一、冒泡排序

1、概念

冒泡排序通过序列左边开始比较相邻位置数字的大小,左边数字大于右边了交换位置,只到最大的到最右边,然后再从左边开始比较相邻位置的数字,左边大于右边交换位置,只到最大的到右边第二个位置,循环操作,在这个过程中,数字会像泡泡一样,慢慢从左往右“浮”到序列的右端,所以这个算法才被称为“冒泡排序”。看图解理解此概念很容易。


2、图解

image.png

3、代码实现

public class BubbleSortTest {
    public static void main(String[] args) {
        int[] arr = new int[]{11, 2, 3, 5, 7, 4, 10, 8, 9};
        BubbleSort(arr);
        System.out.println(Arrays.toString(arr));
    }
    private static void BubbleSort(int[] arr) {
        //从右边开始循环遍历数组
        for (int i = arr.length - 1; i > 0; i--) {
            //遍历未排序的数组
            for (int j = 0; j < i; j++) {
                //相邻位置左边值大于右边,交换位置,将最大值最后换到待排序列最右边
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
}

二、选择排序


1、概念


选择排序就是从左边第一个开始,遍历右边序列找到最小的值与左边第一个数据交换位置,这样左边第一个数字就是整个序列最小的,然后从左边第二个开始,遍历右边的序列找到最小的值与左边第二个交换位置,依次类推,只到右边待排序的数据个数为0,结束循环,此时数组排序成功,因为每次循环后,左边的序列都是有序的。看图解理解此概念很容易。


2、图解

image.png

3、代码实现

public class SelectQueueTest {
    public static void main(String[] args) {
        int[] arr = new int[]{1, 4, 7, 3, 7, 5, 7, 4, 9, 0, 8, 6, 3, 3, 4, 3, 4};
        SelectQueue(arr);
        System.out.println(Arrays.toString(arr));
    }
    private static void SelectQueue(int[] arr) {
        //总左边第一个开始,循环遍历每一个值
        for (int i = 0; i < arr.length; i++) {
            //默认序列中最小值的位置是待排序列第一个
            int min = i;
            //找到比默认最小值更小的,更新默认最小值位置
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[min] > arr[j]) {
                    min = j;
                }
            }
            //默认最小值位置如果更新了,说明最小值在右边序列中,交换数值
            if (min != i) {
                int temp = arr[i];
                arr[i] = arr[min];
                arr[min] = temp;
            }
        }
    }
}
目录
相关文章
|
2月前
|
存储 搜索推荐 算法
Java数组全套深入探究——进阶知识阶段2、冒泡排序
Java数组全套深入探究——进阶知识阶段2、冒泡排序
38 0
|
1月前
|
Java C语言
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
28 0
|
1天前
|
存储 算法 Java
wtf?java的冒泡排序还可以这样写
wtf?java的冒泡排序还可以这样写
7 1
|
18天前
|
Java 索引
Java练习题-用冒泡排序法实现数组排序
Java练习题-用冒泡排序法实现数组排序
14 2
|
23天前
|
搜索推荐 Java
Java基础(快速排序算法)
Java基础(快速排序算法)
24 4
|
1月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--快速排序
数据结构与算法(Java篇)笔记--快速排序
|
1月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--插入排序
数据结构与算法(Java篇)笔记--插入排序
|
1月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--选择排序
数据结构与算法(Java篇)笔记--选择排序
|
1月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--冒泡排序
数据结构与算法(Java篇)笔记--冒泡排序
|
1月前
|
搜索推荐 Java
Java实现插入排序算法
Java实现插入排序算法
11 0