JAVA中数组排序方法都有哪些

人气:298 ℃/2023-07-28 00:48:21

使用JAVA进行编程的时候,数组是比较常用的数据类型。我们运用数组的时,经常需要对数组进行排序。那么在JAVA中有哪些数组排序的方法呢?下面小编给大家分享一下。

操作方法

首先我们要看的就是冒泡排序,这个排序方法是最流行的,它会将小的数先排列出来,如下图所示

接下来我们看选择排序,这个方法也比较常用,它主要运用了中间变量进行排序辅助,如下图所示

接着要介绍的是最简单的方法,就是数组自带的sort排序方法,直接调用即可,如下图所示

最后还有一个反转排序,顾名思义就是倒着排,它的使用比起前面的要简单,如下图所示

java里数组的排序方法有哪些

Java几种排序方式

//冒泡排序public static void bubbleSort(int[] arr){//用来记录数据,便于互换数据int temp = 0;//当倒数第二个数确定,则无需继续排序。故为arr.length -1次 for (int i = 0; i < arr.length -1; i ){ /*从第一个数开始,让它跟往后一个数进行比较,然后如此类推,因为第一层每执行完一趟, 都会确定数组末尾的一个数,已确定的数不需要加入比较,固有arr.length - i 同时,每一次剩最后两个数时只需要执行一次,所以arr.length - i -1次 */ 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; } } }}

//选择排序 public static void selectionSort(int[] arr){ //定义一个数,用于记录找到的数 int temp = 0; //第一层for循环为执行的总次数,因为执行到倒数第二个数是,数组已经有序,故arr.length -1 for(int i = 0; i < arr.length -1; i ){ //用于记录下标 int index = i; //这里是从i开始后的所有数都要进行比较 for (int j = i 1;j < arr.length; j ){ //如果发现有比arr[i]大的,则更新下标,这样是为了最终找到最小的那个数的下标 if (arr[index] > arr[j]){ index = j; } } //如果进入循环前的i发生了变化,则证明有数更小,并且更小的数,下标为j,直接交换即可 if (index != i){ temp = arr[index]; arr[index] = arr[i]; arr[i] = temp; } } }

//插入排序public static void insertSort(int[] arr){//用于记录数据以及下标int temp = 0 , j = 0;//从第二个数(即 i = 1)开始进行对前面进行插入 for(int i = 1; i < arr.length; i ){ //记录这个数以及下标 temp = arr[i]; j = i; //记录下的temp比它前面的数(j - 1)要小,则往前插入,当j = 0时为最前面的数了,所以结束 while (j > 0 && temp <arr[j - 1]){ //直接让在自己前面的数将自己覆盖(可以看成是前面的数往后退了),因为已经用temp记录下来了 arr[j] = arr[j-1]; //然后继续往前找 j--; } //循环结束后,则说明已经找到了位置,而且下标为j,直接插入即可 arr[j] = temp; }}

//希尔排序 public static void SellSort(int[] arr){ /*不停对 原数组 进行分组,step为每个数组的元素之间 的距离 (这里是看作是不同数组,实际在同一个数组中) 不停的缩小距离(step),则是将数组分得更小,直到step = 1(成为一个数组) */ for(int step = arr.length/2; step > 0 ; step = step/2){ /* 从下标step开始为一个数组的第二个数,然后进行插入排序 step 1 为下一个数组第二个数,进行插入排序,以此类推 */ for (int i = step ; i < arr.length; i ){ //这操作与插入排序相同,结合插入排序理解 //记录数以及下标 int j = i; int temp = arr[j]; //数组的前一个数(arr[j - step])比trmp大则继续插入,当(j - step) > 0 则说明已经到了数组最前面的数 while ((j - step) > 0 && arr[j - step] > temp){ arr[j] = arr[j - step]; j = j - step; } //找到位置则插入 arr[j] = temp; } } }

推荐

首页/电脑版/网名
© 2025 NiBaKu.Com All Rights Reserved.