zoukankan      html  css  js  c++  java
  • Java数组冒泡,选择,插入三种常用排序法及自带的快速排序法

    int[] arr = { 4, 9, 8, 7, 8, 5, 1, 9, 88 };
    bubbleSort(arr);
    // selectSort(arr);
    // insertSort(arr);
    System.out.println(Arrays.toString(arr));

     
    1.冒泡排序
     
    冒泡排序广泛用于数组排序,大致原理就是从第一个数开始,通过和后面一个数相比较,将较大的往后挪,一一比较之后,将最大的放到最下面。第一次比较完毕将最大的数字放到最后面,第二次比较结束以后将第二大的数字放到倒数第2位,依次进行。
     
    其中,第5行之所以要减去(i+1),是因为每放一个最大的数字到最下面,他们就不用再比较了,也就是说它们的位置就定好了。第i次循环的时候,就已经有i+1个不用做基本比较数字了。这样做只是为了提高效率。

    // 冒泡排序法;两两相互比较,大的数跟后面的数交换位置,以此类推
    public static void bubbleSort(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr.length - 1 - i; j++) {
    if (arr[j] > arr[j + 1]) {
    // 交换位置
    int temp = arr[j];
    arr[j] = arr[j + 1];
    arr[j + 1] = temp;
    }
    }
    }
    }

    2.选择排序
    先找到整个数组里面的最小值,将其和数组的第一个数值进行交换。然后在除了第一个数值之外的剩下的数组里面进行搜索,找到最小的数值,将其和整个数组的第二个数值交换。依次进行,直到最后一个数值。

    // 选择排序法:找到最小数的索引,与第i个数交换位置,以此类推
    public static void selectSort(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
    int min = i;
    for (int j = i + 1; j < arr.length; j++) {
    if (arr[i] > arr[j]) {
    min = j;
    }
    }
    // 找到了最小值的下标min
    int temp = arr[i];
    arr[i] = arr[min];
    arr[min] = temp;
    }
    }

    3.插入排序
    顾名思义,假设第0个元素已经在正确的位置上,从第1个元素开始,依次和左边已经排好的序列进行比较,将值插入到左边合适的位置上。

    // 插入排序法:假设前面的数已经有了顺序,在将要插入的数按照原来的规律插入到其中
    public static void insertSort(int[] arr) {
    for (int i = 1; i < arr.length; i++) {
    // 保存要插入的数
    int temp = arr[i];
    int j = i - 1;
    while (j >= 0 && arr[j] > temp) {
    arr[j + 1] = arr[j];
    j--;
    }
    arr[j + 1] = temp;
    }
    }

    4.数组自带的静态方法
     
    这个方法是Arrays.sort(int[ ] values);
     
    直接使用就可以了。怎么说呢?选择排序算法最主要考虑的就是效率,数组自带的这个排序方法叫做快速排序方法。看名字就知道效率最高,所以说默认情况下,就直接使用这个就行了。
  • 相关阅读:
    windows下安装rabbitmq
    selectors
    修改Docker默认镜像和容器的存储位置
    eclipse配置jdk的src.zip源代码步骤
    Zookeeper WINDOWS 安装配置
    zookeeper windows 入门安装和测试
    zookeeper集群搭建(windows环境下)
    ant使用指南详细入门教程
    linux查看系统版本和系统位数
    suse linux 命令
  • 原文地址:https://www.cnblogs.com/hangaozu/p/7544459.html
Copyright © 2011-2022 走看看