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从大到小排.的主要内容,如果未能解决你的问题,请参考以下文章