首页编程java编程java 数组排序什么算法,Java数组排序 几种排序方法详细一点

java 数组排序什么算法,Java数组排序 几种排序方法详细一点

编程之家2023-10-14105次浏览

大家好,感谢邀请,今天来为大家分享一下java 数组排序什么算法的问题,以及和Java数组排序 几种排序方法详细一点的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

java 数组排序什么算法,Java数组排序 几种排序方法详细一点

Java通过几种经典的算法来实现数组排序

JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法。

快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。

冒泡法是运用遍历数组进行比较,通过不断的比较将最小值或者最大值一个一个的遍历出来。

java 数组排序什么算法,Java数组排序 几种排序方法详细一点

选择排序法是将数组的第一个数据作为最大或者最小的值,然后通过比较循环,输出有序的数组。

插入排序是选择一个数组中的数据,通过不断的插入比较最后进行排序。下面我就将他们的实现方法一一详解供大家参考。

<1>利用Arrays带有的排序方法快速排序

java 数组排序什么算法,Java数组排序 几种排序方法详细一点

public class Test2{ public static void main(String[] args){ int[] a={5,4,2,4,9,1}; Arrays.sort(a);//进行排序 for(int i: a){ System.out.print(i);}}}

<2>冒泡排序算法

public static int[] bubbleSort(int[] args){//冒泡排序算法 for(int i=0;i<args.length-1;i++){ for(int j=i+1;j<args.length;j++){ if(args[i]>args[j]){ int temp=args[i]; args[i]=args[j]; args[j]=temp;}}} return args;}

<3>选择排序算法

public static int[] selectSort(int[] args){//选择排序算法 for(int i=0;i<args.length-1;i++){ int min=i; for(int j=i+1;j<args.length;j++){ if(args[min]>args[j]){ min=j;}} if(min!=i){ int temp=args[i]; args[i]=args[min]; args[min]=temp;}} return args;}

<4>插入排序算法

public static int[] insertSort(int[] args){//插入排序算法 for(int i=1;i<args.length;i++){ for(int j=i;j>0;j--){ if(args[j]<args[j-1]){ int temp=args[j-1]; args[j-1]=args[j]; args[j]=temp;}else break;}} return args;}

Java数组排序 几种排序方法详细一点

JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法。

快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。

冒泡法是运用遍历数组进行比较,通过不断的比较将最小值或者最大值一个一个的遍历出来。

选择排序法是将数组的第一个数据作为最大或者最小的值,然后通过比较循环,输出有序的数组。

插入排序是选择一个数组中的数据,通过不断的插入比较最后进行排序。下面我就将他们的实现方法一一详解供大家参考。

<1>利用Arrays带有的排序方法快速排序

publicclassTest2{

publicstaticvoidmain(String[]args){

int[]a={5,4,2,4,9,1};

Arrays.sort(a);//进行排序

for(inti:a){

System.out.print(i);

}

}

}

<2>冒泡排序算法

publicstaticint[]bubbleSort(int[]args){//冒泡排序算法

for(inti=0;i<args.length-1;i++){

for(intj=i+1;j<args.length;j++){

if(args[i]>args[j]){

inttemp=args[i];

args[i]=args[j];

args[j]=temp;

}

}

}

returnargs;

}

<3>选择排序算法

publicstaticint[]selectSort(int[]args){//选择排序算法

for(inti=0;i<args.length-1;i++){

intmin=i;

for(intj=i+1;j<args.length;j++){

if(args[min]>args[j]){

min=j;

}

}

if(min!=i){

inttemp=args[i];

args[i]=args[min];

args[min]=temp;

}

}

returnargs;

}

<4>插入排序算法

publicstaticint[]insertSort(int[]args){//插入排序算法

for(inti=1;i<args.length;i++){

for(intj=i;j>0;j--){

if(args[j]<args[j-1]){

inttemp=args[j-1];

args[j-1]=args[j];

args[j]=temp;

}elsebreak;

}

}

returnargs;

}

Java排序一共有几种

java的排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。

1.插入排序:直接插入排序、二分法插入排序、希尔排序。

2.选择排序:简单选择排序、堆排序。

3.交换排序:冒泡排序、快速排序。

4.归并排序

5.基数排序

java中Arrays.sort使用的是什么算法

Arrays.sort()

先来看看Arrays.sort();,一点进这个方法会看到是这样子的

publicstaticvoidsort(int[]a){

DualPivotQuicksort.sort(a,0,a.length-1,null,0,0);

}123

果然没这么简单,DualPivotQuicksort翻译过来就是双轴快速排序,关于双轴排序可以去这里http://www.cnblogs.com/nullzx/p/5880191.html看看。那再次点进去,可以发现有这么一段代码

if(right-left<QUICKSORT_THRESHOLD){

sort(a,left,right,true);

return;

}1234

可以发现如果数组的长度小于QUICKSORT_THRESHOLD的话就会使用这个双轴快速排序,而这个值是286。

那如果大于286呢,它就会坚持数组的连续升序和连续降序性好不好,如果好的话就用归并排序,不好的话就用快速排序,看下面这段注释就可以看出

*Thearrayisnothighlystructured,

*useQuicksortinsteadofmergesort.

123

那现在再回到上面的决定用双轴快速排序的方法上,再点进去,发现又会多一条判断

//Useinsertionsortontinyarrays

if(length<INSERTION_SORT_THRESHOLD)

123

即如果数组长度小于INSERTION_SORT_THRESHOLD(值为47)的话,那么就会用插入排序了,不然再用双轴快速排序。

所以总结一下Arrays.sort()方法,如果数组长度大于等于286且连续性好的话,就用归并排序,如果大于等于286且连续性不好的话就用双轴快速排序。如果长度小于286且大于等于47的话就用双轴快速排序,如果长度小于47的话就用插入排序。真是有够绕的~

java 数组排序什么算法的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Java数组排序 几种排序方法详细一点、java 数组排序什么算法的信息别忘了在本站进行查找哦。

java什么是流式计算(Java中对象有什么用)java用什么管理内存溢出 java程序内存溢出一般什么原因