首页编程java编程java数组排序sort?java中arrays.sort()的三种用法

java数组排序sort?java中arrays.sort()的三种用法

编程之家2026-05-261067次浏览

各位老铁们,大家好,今天由我来为大家分享java数组排序sort,以及java中arrays.sort()的三种用法的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

java数组排序sort?java中arrays.sort()的三种用法

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

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

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

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

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

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

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

java数组排序sort?java中arrays.sort()的三种用法

publicclassTest2{

publicstaticvoidmain(String[]args){

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

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

for(inti:a){

System.out.print(i);

java数组排序sort?java中arrays.sort()的三种用法

}

}

}<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中数组排序的问题

记得文件名与公共类保持一致(大小写区分)

import java.util.*;

public class Zhidao{

//选择排序

public static void sort(int[] arr){

//输出原始数据

System.out.println("排序前");

for(int d:arr)

System.out.printf("%4d",d);

int temp=0;//临时变量,用于交换

//过程,从0~9开始,每次找最小的放的前面

for(int i=0;i<arr.length-1;++i){

temp=arr[i];//假设为最小值

for(int j=i;j<arr.length;++j){

if(temp>arr[j]){//当有比最小值还小的,则置为最小值

//将之前的最小值与新的最小值交换,前面的则为有序

temp=arr[j];

arr[j]=arr[i];

arr[i]=temp;

}

}

}

System.out.println("\n排序后");

for(int d:arr)

System.out.printf("%4d",d);

System.out.println();

}

public static void main(String[] args){

int[] array=new int[]{10,3,5,8,9,1,4,2,6,7};

//排序并输出

sort(array);

Scanner scanner=new Scanner(System.in);//用来接收控制台输入

int len=0;//数组长度

System.out.print("请输入数组长度:");

len=scanner.nextInt();//接收到数组长度

if(len<=0){//长度不合法,退出

System.out.println("输入错误");

System.exit(0);

}

int[] input_array=new int[len];//创建数组

System.out.println("请依次输入数字,以回车区分:");

int count=0;

while(count<len){

//依次为数组赋值

input_array[count++]=scanner.nextInt();

}

//排序并输出

sort(input_array);

}

}

java 怎么将List里面数据排序

不好意思,上午只是粗略地看了一下,没有细致看,现在详细回答你的提问。

ArrayList底层是用一个长度为10的Object数组实现,不管添加进去什么类型的数据,都会转换成Object对象,除非你用很早以前的JDK版本。这样就好理解了,像你写的程序arrayList1中add了String和Integer两种类型的数据,这两类对象没有什么可比性,就像拿打火机和U盘比一个性质。所以,是没有办法进行直接排序的。

你要求的是要按ArrayList里面的第1、2、4数据进行排序,这个可以。

先来arrayList1

四个数据分别是2、"daas"、6、"1",第1、2、4数据即2、“daas”、“1”,我选择按照String类型进行排序,所以第1个数据2转换成String类型即可。因为第3个数据6不进行排序,remove就好。这是个题还是个什么,其实还是留了点活路的,因为后面的(你arrayList2\3\4下面)代码都是往arrayList1中添加的,而且还都是String类型。这也是我选择String类型进行排序的原因。代码如下:

List arrayList1= new ArrayList();

arrayList1.add(2);//0

arrayList1.add("daas");//1

arrayList1.add(6);//2

arrayList1.add("1");//3

list.add(arrayList1);

//my code

String convert= String.valueOf(arrayList1.get(0));

arrayList1.remove(2);

arrayList1.remove(0);

arrayList1.add(convert);

/此处为你的arrayList2\3\4代码

Collections.sort(arrayList1);

for(int i= 0; i< arrayList1.size(); i++){

System.out.println(arrayList1.get(i));

}

结果为:

1

2

3

5

8

daas

因为怕你深挖,强调两点:

第一点,由结果看出Collections.sort(arrayList1),是以String的ASCII码进行排序的,为了证明这一点,就要看原代码,这时你就会发现JDK中String的compareTo方法是个空实现,底层并不是用java写的,这点没事,我们可以用一定的方法让它把特征暴露出来,然后就可以理解思想。你看我下面写的小测试程序就会明白。

String a= new String("Z");

String b= new String("A");

System.out.println(a.compareTo(b));

String c= new String("A");

String d= new String("B");

System.out.println(c.compareTo(d));

//看结果,证明String的自然顺序比较即比较ASCII值,只是第一步。

//看结果,证明compareTo返回值是后面的ASCII码减支前面的ASCII码,第二步。

String e= new String("g");

String f= new String("e");

String h= new String("h");

List<String> list= new ArrayList<String>();

list.add(e);

list.add(f);

list.add(h);

Collections.sort(list);

for(String i: list){

System.out.println(i);

}

结果为:

25

-1

e

g

h

//证明String的自然排序即ASCII码从小到大排序,最后一步。

第二点,你的要求是“要按ArrayList里面的第1、2.4数据进行排序,分别怎么做啊”,这个问题的描述有问题,或者不详细,arryList2、arrayList3、arrayList4任何一个里面一共就add了3个数据,哪来第4个。如果是分别对arrayList2\3\4里面的数据进行排序,两个选择,(1)把所有Integer转换成String类型,再排序,参考arrayList2。(2)运用Integer.valueOf()方法,将内容为数字的String数据转换成Integer,把原来的remove掉,把内容非数字的String数据remove掉,再排序,桶排序、冒泡排序、快速排序等你随便选。

讲解到这,不管想对哪个list进行排序,你应该都会写了。

除非比较ASCII码,Integer类型和内容为非数字的String类型数据是没有办法进行比较的,不管是直接比较,还是间接比较。还是上面那句话,像打火机和U盘没有可比性一样,理解这点很重要。

即使用Integer.valueOf()方法对内容为非数字的String类型数据进行转换没有用,会报NumberFormatException。说这点意思是如果你想按Integer类型排序,得把所有内容为非数字的String类型数据remove掉。

题外话:这种类型的题我记得上大学的时候有,不知道你是不是学生,今天想来,其实用处真不大,都用泛型,现在写代码不用泛型的程序员几乎是完全不存在了。

祝心情愉快~~

亲手打,如果满意,把分给我吧~~哈哈。。

关于java数组排序sort和java中arrays.sort()的三种用法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

网页设计与制作作品 网页设计制作网站模板手机版python编程软件,手机运行python