JAVA中如何使用SORT从大到小排.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中如何使用SORT从大到小排.相关的知识,希望对你有一定的参考价值。

不要用循环,只用一条或两条语句能否排出.

在排序中,最重要的是自己实现自己的比较的行数,即是implements Comparator
实现方法 public int compare(Object o1, Object o2) 最为重要..

举个例子:
package book.arrayset;

import java.util.Comparator;

/**
* 整数比较器,将整数按降序排列
*/
class MyIntComparator implements Comparator

/**
* o1比o2大,返回-1;o1比o2小,返回1。
*/
public int compare(Object o1, Object o2)
int i1 = ((Integer)o1).intValue();
int i2 = ((Integer)o2).intValue();
if (i1 < i2)
return 1;

if (i1 > i2)
return -1;

return 0;



//上面的为比较的函数实现,下面真正的添加数据,

//通过调用上面的比较函数实现自定义排序的功能

package book.arrayset;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
* 对List中的元素排序
*/
public class SortList

public static void output(List list)
if (list == null)
return;

for (int i=0; i<list.size(); i++)
System.out.print(list.get(i).toString() + " ");

System.out.println();


public static void main(String[] args)
List list = new ArrayList();
list.add(new Integer(5));
list.add(new Integer(8));
list.add(new Integer(1));
list.add(new Integer(3));
list.add(new Integer(2));
list.add(new Double(3.1));
System.out.println("list开始状态");
SortList.output(list);
//Collections.sort方法将用默认比较器排列list的元素
Collections.sort(list);
System.out.println("list被默认比较器排序后的状态");
SortList.output(list);
//下面将list的元素按降序排列
Collections.sort(list, new MyIntComparator());
System.out.println("list被自定义比较器排序后的状态");
SortList.output(list);

//因此,对于任意自定义类的对象,当保存在集合类容器中后,如果需要对它们进行排序,
//需要自己提供适应于自定义类的比较器,自定义比较器必须实现Comparator接口。
//然后采用Collections.sort(list, comparator);方法对容器进行排序。

参考技术A public static String sort1 = "BIG_TO_SMALL ";

public static String sort2 = "SMALL_TO_BIG ";

String[] list = new String[] "C1 ", "A2 ", "B1 ", "E1 ", "D1 ", "F1 " ;

Arrays.sort(list, new AlphabeticComparator1(sort2));

差不多这样就行了。
参考技术B import java.lang.StringBuffer;

public class API_String

public static void main(String[] args)

String str = "abcd";

// 字符串倒序方法一
char[] ch = str.toCharArray();
StringBuffer sb = new StringBuffer();
for (int i = ch.length - 1; i >= 0; i--)
sb.append(ch[i]);

System.out.println(sb.toString());

// 字符串倒序方法二
StringBuffer sbb = new StringBuffer();
for (int i = str.length() - 1; i >= 0; i--)
sbb.append(str.charAt(i));

System.out.println(sbb.toString());

// 字符串倒序方法三
System.out.println(new StringBuffer(str).reverse().toString());




方法一和方法二都是利用已知的索引进行倒序,它们的算法很类似。方法三利用了JAVA中已有API的倒序方法(StringBuffer中的reverse())在API帮助文档里是这么说的:将此字符序列用其反转形式取代。

在matlab中从大到小排序

编写一个功能函数fun1( ),该函数能够将输入矩阵A中的所有元素从大到小排成一行输出,并同时输出各元素在原矩阵当中所处的行、列位置。

当A为向量时:
sort(A)实现从小到大排序;
sort(A,'descend')实现从大到小排序;
sort(A,'ascending')实现从小到大排序;
当A为矩阵时:
sort(A)实现按列从小到大排序;
sort(A,'descend')同理。
sort(A,'ascending')同理。
sort(A,2)实现按行从小到大排序;
sort(A,2,'descend')同理。

用[x,y]=sort(A)可以把A按从小到大排序
并给出在A中相应的下标(y中记录的是下标)
你想要几个最大的数,就从后往前取几个y的值就可以了

或者用x,y]=sort(A,'descend')从大到小排序
输出前面的值就可以了

参考资料:http://hi.baidu.com/2008zhenghui

参考技术A function [pos,row] =find_matrix(a);
handle =fopen('pos.txt','w');
dim =size(a);
C =reshape(a,1,[]);
row =sort(C,'descend');
fprintf(handle,'After sort : %g \r\n\r\n',row);
for index =1:length(C)
pos = find(a==C(index));
if mod(pos,dim(1))==0
rowtp =dim(1);
else
rowtp =mod(pos,dim(1));
end
if pos/dim(1)-mod(pos/dim(1),1)>0
cltp =pos/dim(1)-mod(pos/dim(1),1);
else
cltp =1;
end

fprintf(handle,'%g is at : row = %g ,column =%g \r\n\r\n',C(index),rowtp,cltp);
end
fclose(handle);
end
参考技术B 1、字符串排序应该用sortrows函数。
2、你的变量a使用cell数组感觉非常别扭,处理起来麻烦很多,不如直接用结构数组(那样代码中的两次转换都可以省去)。
示例代码:
a1.text='bb';
a2.text='aa';
a1.data=4;
a2.data=8;
%
转为结构数组
a=[a:];
%
按字符串排序
[b,idx]=sortrows(a.text');
a=a(idx);
%
转回cell数组
a=mat2cell(a,1,ones(1,length(a)));
%
查看结果
a1
a2

以上是关于JAVA中如何使用SORT从大到小排.的主要内容,如果未能解决你的问题,请参考以下文章

java数组排序问题:array.sort()是从小到大排序,那么如何从大到小排序?

如何将inode计数从大到小排序

在matlab中从大到小排序

C++实现多级排序

matlab如何将一个一维数组从大到小排序

java 输入任意几个数字,怎样将他们从大到小排序?