数组的排序:

把一个无序序列通过比较交换等手段使其变成一个有序序列

数组排序方法:

冒泡排序、选择排序、插入排序、快速排序、归并排序等

冒泡排序:

数组中的元素两两比较,大的往后放,经过一轮比较之后最大的元素就出现在最后面。冒泡排序举例如下:将数组从小到大排序

冒泡排序思想:

java如何对数组排序输出 java怎么对数组进行排序_冒泡排序

import java.sql.Array;
import java.util.Arrays;

public class MyTest {


    public static void main(String[] args) {
       //定义一个数组
        int [] arr={29,93,9,68,56,89,99,12,23,-1,0,66};
       //嵌套循环:冒泡排序时,一轮比较下来只会将最大的值放在最后,但是整个数组并非有序数组,因此想要将整个数组进行排序的话,就需要重复执行‘数组长度-1’次比较循环。

        for(int j=0;j<arr.length - 1;j++) {
           for (int i = 0; i < arr.length - 1-j; i++) {
               if (arr[i] > arr[i + 1]) {
                   //两两之间的比较交换
                   int t = arr[i];
                   arr[i] = arr[i + 1];
                   arr[i + 1] = t;
               }
           }
       }
       //外层循环代表次数,里层循环是执行冒泡排序循环。
        System.out.println(Arrays.toString(arr));//打印数组

    }
}

选择排序:

从0索引处的元素开始 依次跟后面的元素挨个进行比较,小的往前放,经过一轮比较后最小的出现在最前面。

选择排序思想:

java如何对数组排序输出 java怎么对数组进行排序_数组_02

import java.util.Arrays;

public class MyTest2 {
    public static void main(String[] args) {
        int[] arr={29,93,9,68,56,89,99,12,23,-1,0,66};
        //index定义索引,索引从0开始
        int index=0;
        //外层循环比较的轮数,有arr.length个元素就要循环arr.length-1轮
        for(index=0;index<arr.length-1;index++) {
        //里层循环是进行选择排序的循环,由于选择排序是从0索引处元素开始,
        //因此里层循环开始元素就应该是1索引处与0索引处进行比较
        //所以定义应该为int i = 1+index
            for (int i = 1+index; i < arr.length; i++) {
                if (arr[index] > arr[i]) {
                    int t = arr[index];
                    arr[index] = arr[i];
                    arr[i] = t;
                }
                //上述if语句中程序意思:两个位置索引处的元素值进行交换
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

插入排序
每次拿后面的一个元素插入到之前的一个有序序列当中,使之仍保持有序
插入排序思想:
假设有一组元素[k1,k2,…kn],排序开始就认为k1是一个有序序列,让k2插入上述表长为1的有序序列,使之成为一个表长为2 的有序序列,然后让k3插入上述表长为2的有序序列使之成为表长为3的有序序列,以此类推,最后让kn插入表长为kn-1的有序序列得到一个表长为n的有序序列。

程序举例:

while循环进行实现:

import java.util.Arrays;

public class MyTest4 {
    public static void main(String[] args) {
        int [] arr={29,93,9,68,56,89,99,12,23,-1,0,66};
       //外层循环,实现的是循环arr.length-1轮
        for (int i = 1; i < arr.length; i++) {
           //里层循环实现插入排序
            int j=i;
            while(j>0&&arr[j]<arr[j-1]){
            //值交换
                int t=arr[j];
                arr[j]=arr[j-1];
                arr[j-1]=t;
                j--;
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}
for循环实现
import java.util.Arrays;

public class MyTest3 {
    public static void main(String[] args) {
        int [] arr={19,56,89,44,13};
        //循环轮数,由数组元素长度决定
        for(int i = 1;i<arr.length;i++){
            //插入思想
            for(int j=i;j>0;j--){
                if(arr[j]<arr[j-1]){
                    int t=arr[j];
                    arr[j]=arr[j-1];
                    arr[j-1]=t;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}