只有一个升序的方法是这样的: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()是降序,那升序是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)