java中 Arrays.sort是升序 那什么是降序 是!Arrays.sort吗

java中 Arrays.sort是升序 那什么是降序 是!Arrays.sort吗,第1张

只有一个升序的方法是这样的:javautilArrayssort(数组名称)~~~

如果你非得要降序,可以用这个方法转变一下:

Systemarraycopy(源数组名称,源数组开始点,目标数组名称,目标数组开始点,拷贝长度) ;

或者手写一个方法也好~~~

int temp;

for(int i = 0; i < length / 2; i++) {

temp = [i];

[i] = [length - i - 1];

[length - i - 1] = temp;

}

方法我就不写了下面给你个冒泡排序吧

//从小到大

for (int i = 0; i < numlength-1; i++) {

   for (int j = 0; j < numlength-1-i; j++) {

    if(num[j] > num[j+1]){

     int temp = num[j];

     num[j] = num[j+1];

     num[j+1] = temp;

    }

   }

  }

//从大到小

for (int i = 0; i < numlength-1; i++) {

   for (int j = 0; j < numlength-1-i; j++) {

    if(num[j] < num[j+1]){

     int temp = num[j];

     num[j] = num[j+1];

     num[j+1] = temp;

    }

   }

  }

其实 我就改变了它的判断条件

我印象中如果不重写compareTo方法那返回值都是-1吧

我一般都是实现Comparable接口,重写CompareTo方法就可以了。

至于降序升序,可以这样比较:

假如A的值大于B,你返回1。这样调用Collectionssort()方法就是升序

假如A的值大于B,你返回-1。这样调用Collectionssort()方法就是降序

一般比较的都是对象中一个具体的数值。不知道你的类的构造,不好给例子

import javautilArrays;

import javautilScanner;

public class Test4 {

public static void main(String[] args) {

Systemoutprint("输入一串纯数字后按Enter键:");

Scanner sc = new Scanner(Systemin);

String inps = scnextLine();

int maxNum = 0;

if(inpstrim()length()==0){

Systemerrprintln("未输入有效数字内容!");

return;

}

Object[] inpsArr = new Object[0];

if(inpsindexOf(",")>-1){

inpsArr = inpssplit(",");//如果带有英文逗号则以逗号分隔拆分为数组

}else{

char[] charArray = inpstoCharArray();//否则拆分为数组时把每一个字符作为数组的一个元素

inpsArr = new Object[charArraylength];

for (int i = 0; i < charArraylength; i++) {

char c = charArray[i];

inpsArr[i] = StringvalueOf(c);

}

}

Object[] xx2 = sorts(inpsArr);//排序

Systemoutprintln(ArraysasList(xx2));//打印排序结果

}

/

从大到小对数组元素进行排序,数组中的不可转换为数值的元素将保持原位置不变,不参与排序

@param soureArr : 待排序的数组

@return 排序好的数组

/

static Object[] sorts(Object[] soureArr){

Object[] arr = ArrayscopyOf(soureArr, soureArrlength);//复制一份副本进行 *** 作,不改变原数组内容

Double d = 0d;//允许元素带有小数点

Double d2 = 0d;//允许元素带有小数点

for (int i = 0; i < arrlength-1; i++) {

String ss = StringvalueOf(arr[i]);

try{

d = DoublevalueOf(ss);

}catch(Exception e){

continue;//跳过 不可转换为数值的元素

}

for (int j = i+1; j < arrlength; j++) {

String ss2 = StringvalueOf(arr[j]);

try{

d2 = DoublevalueOf(ss2);

}catch(Exception e){

continue;//跳过 不可转换为数值的元素

}

if(d > d2){//排序方式:d<d2为降序,d>d2为升序

arr[i] = ss2;

arr[j] = ss;

ss = ss2;

d = d2;

}

}

}

return arr;

}

}

默认的是升序

但你既然知道Comparator,你就可以让它降序

例如:

比如原来你的comparator方法,返回的是

class A{int a;}

comparator(A a1,A a2){return a1a-a2a}//升序

comparator(A a1,A a2){return a2a-a1a}//降序

在Java中在数组中保存10个数,调用下面的排序函数,用选择法按降序排序:public static void selectionSort(int[] arr){ for (int i = 0; i < arrlength - 1; i++) { int max = i; for (int j = i + 1; j < arrlength; j++) { if (arr[max] < arr[j]) { max = j; } } if (max != i) { int tmp = arr[max]; arr[max] = arr[i]; arr[i] = tmp; } } }

以上就是关于java中 Arrays.sort是升序 那什么是降序 是!Arrays.sort吗全部的内容,包括:java中 Arrays.sort是升序 那什么是降序 是!Arrays.sort吗、JAVA 中java.util包中的Arrays类可以进行升序排列 那降序怎么做啊 用for怎么对数组逆循环、java中Arrays.sort()是降序,那升序是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10189739.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存