要求不明确,是m个数中的随机的n个数,还是由大到小的n个数,还是无所谓呢?
解决方案 »
- ArrayList存储
- 找不到CLASS的问题
- 一个菜鸟级问题!
- 关于参数传递
- JAVA初级问题,请大家教教小弟!
- 如何用java实现文件数据库操作,要求平台无关
- 如何将两张gif图片叠加在一起,然后生成一张新的图片?
- 为什么我每次socket.close();都会挑异常??
- Statement对象的哪种方法正确:S.getconnect,S.next,s.disconnect,s.executeQuery
- 怎么在Java Applet中点击按钮弹出Ie窗口
- java访问oracle数据库时的一个小问题
- 如何解决JBUILDER6的盗版LICENCE,安了以后跑几次就说LICENCE是UNKOWN?100分
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2002</p>
* @author Jack
* @version 1.0
*/public class testA { public testA() {
}
public static void main(String[] args) {
testA test = new testA();
long[] counts = {5,1,3,4,8};
long[] newCounts = new long[5];
newCounts = test.sort(counts,4);
for(int i = 0;i<newCounts.length;i++){
System.out.println(newCounts[i]);
}
} public long[] sort(long[] counts,int orderCount){
long tmp;
for(int i=0;i<counts.length-1;i++){
for(int j=i+1;j<counts.length;j++){
if(counts[j]<counts[i]){
tmp = counts[i];
counts[i] = counts[j];
counts[j] = tmp;
}
}
}
long[] newCounts = new long[orderCount];
for(int i=0;i<orderCount;i++){
newCounts[i] = counts[i];
} return newCounts;
}
}
void SortProcedure()
{
int pass,i,temp;
for(pass=1;pass<DataArray.length;pass++)
{
temp=DataArray[pass];
for(i=pass-1;i>0;i--)
{
if (DataArray[i]<=temp)
break;
else
DataArray[i+1]=DataArray[i];
}
DataArray[i+1]=temp;
for (i=0;i<DataArray.length;i++)
{
SortPro[pass][i]=DataArray[i];
}
}
}
请自行分析该程序。/* 此类定义了一些用于Strings和其他对象高效排序的静态方法
* 还定义了两个接口,可提供对要排序对象进行比较的两种不同方法
*/
import java.text.Collator;
import java.text.CollationKey;
import java.util.Locale;public class Sorter {
public static interface Comparer {
public int compare(Object a,Object b);
} public static interface Comparable {
public int compareTo(Object other);
} private static Comparer ascii_comparer=new Comparer() {
public int compare(Object a,Object b) {
return ((String)a).compareTo((String)b);
}
}; private static Comparer comparable_comparer=new Comparer() {
public int compare(Object a,Object b) {
return ((Comparable)a).compareTo(b);
}
}; public static void sortAscii(String[] a) {
sort(a,null,0,a.length-1,true,ascii_comparer);
} public static void sortAscii(String[] a,int from,int to,boolean up) {
sort(a,null,from,to,up,ascii_comparer);
} public static void sortAsciiIgnoreCase(String[] a) {
sortAsciiIgnoreCase(a,0,a.length-1,true);
} public static void sortAsciiIgnoreCase(String[] a,int from,int to,boolean up) {
if((a==null)||(a.length<2)) return;
String b[]=new String[a.length];
for(int i=0;i<a.length;i++) b[i]=a[i].toLowerCase();
sort(b,a,from,to,up,ascii_comparer);
} public static void sort(String[] a) {
sort(a,0,a.length-1,true,false,null);
} public static void sort(String[] a,int from,int to,boolean up,boolean ignorecase) {
sort(a,from,to,up,ignorecase,null);
} public static void sort(String[] a,int from,int to,boolean up,boolean ignorecase,Locale locale) {
if((a==null)||(a.length<2)) return;
Collator c;
if(locale==null) c=Collator.getInstance();
else c=Collator.getInstance(locale);
if(ignorecase) c.setStrength(Collator.SECONDARY);
CollationKey[] b=new CollationKey[a.length];
for(int i=0;i<a.length;i++) b[i]=c.getCollationKey(a[i]);
Comparer comp=new Comparer() {
public int compare(Object a,Object b) {
return ((CollationKey)a).compareTo((CollationKey)b);
}
};
sort(b,a,from,to,up,comp);
} public static void sort(Comparable[] a) {
sort(a,null,0,a.length-1,true);
} public static void sort(Comparable[] a,int from,int to,boolean up) {
sort(a,null,from,to,up,comparable_comparer);
} public static void sort(Comparable[] a,Object[] b,int from,int to,boolean up) {
sort(a,b,from,to,up,comparable_comparer);
} public static void sort(Object[] a,Comparer c) {
sort(a,null,0,a.length-1,true,c);
} public static void sort(Object[] a,int from,int to,boolean up,Comparer c) {
sort(a,null,from,to,up,c);
} public static void sort(Object[] a,Object[] b,int from,int to,boolean up,Comparer c) {
if((a==null)||(a.length<2)) return;
int i=from,j=to;
Object center=a[(from+to)/2];
do {
if(up) {
while((i<to)&&(c.compare(center,a[i])>0)) i++;
while((j>from)&&(c.compare(center,a[j])<0)) j--;
} else {
while((i<to)&&(c.compare(center,a[i])<0)) i++;
while((i>from)&&(c.compare(center,a[j])>0)) j--;
}
if(i<j) {
Object tmp=a[i]; a[i]=a[j]; a[j]=tmp;
if(b!=null) { tmp=b[i]; b[j]=b[j]; b[j]=tmp; }
}
if(i<=j) { i++; j--; }
} while(i<=j);
if(from<j) sort(a,b,from,j,up,c);
if(i<to) sort(a,b,i,to,up,c);
} public static class Test {
static class SortableComplexNumber extends ComplexNumber implements Sorter.Comparable {
public SortableComplexNumber(double x,double y) { super(x,y); }
public int compareTo(Object other) {
return sign(this.magnitude()-((ComplexNumber)other).magnitude());
}
} public static void main(String[] args) {
SortableComplexNumber[] a=new SortableComplexNumber[5];
for(int i=0;i<a.length;i++)
a[i]=new SortableComplexNumber(Math.random()*10,Math.random()*10);
System.out.println("Sortde by magnitude:");
Sorter.sort(a);
for(int i=0;i<a.length;i++) System.out.println(a[i]);
System.out.println("Sorted by sum of real and imaginary parts:");
Sorter.sort(a,new Sorter.Comparer() {
public int compare(Object a,Object b) {
ComplexNumber i=(ComplexNumber)a;
ComplexNumber j=(ComplexNumber)b;
return sign((i.real()+i.imaginary())-(j.real()+j.imaginary()));
}
});
for(int i=0;i<a.length;i++) System.out.println(a[i]);
System.out.println("Sorted descending by real,then imaginary:");
Sorter.sort(a,0,a.length-1,false,new Sorter.Comparer() {
public int compare(Object a,Object b) {
ComplexNumber i=(ComplexNumber) a;
ComplexNumber j=(ComplexNumber) b;
double result=i.real()-j.real();
if(result==0) result=i.imaginary()-j.imaginary();
return sign(result);
}
});
for(int i=0;i<a.length;i++) System.out.println(a[i]);
}
public static int sign(double x) {
if(x>0) return 1;
else if(x<0) return-1;
else return 0;
}
}
}
如果是后者,建议用
Arrays.sort()
试试。