关于数组内的数从小到大排列 大家帮帮我,数组内的数从小到大排列要怎么写? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 class sort { java.lang.Comparable d[]; sort(java.lang.Comparable data[]) { d=data; } public void quickSort(int l,int r) { if(l>=r) return; int k=(l+r)/2; int last=l; swap(k,r); for(int i=l;i<r;i++) if(d[i].compareTo(d[r])==-1) swap(last++,i); //partition swap(last,r); quickSort(l,last-1); quickSort(last+1,r); } private void swap(int a,int b) { java.lang.Comparable t=d[a]; d[a]=d[b]; d[b]=t; } public static void main(String s[]) { //for test Integer t[]={ new Integer(4), new Integer(1), new Integer(3) }; new sort(t).quickSort(0,t.length-1); for(int i=0;i<t.length;i++) System.out.print(t[i]+" "); System.out.println(); }}这里使用的是快排,算法复杂度o(nlogn)是平均状况下的。类的使用方法在main里面已经演示了,需要注意的是:为了模拟c++的template,我用了java.lang.Comparable接口,所以在使用基本数据类型的使用要用类封装。例如,int的封装类是Integer,double的封装类是Double。 泡泡最简单。。 for(int x=0; x<max-1; x++) for( int y=0; y<max-1-x; y++) if(array[y]>array[y+1]) { charge value between array[y] and array[y+1] ..................} 问个简单的运算问题 中文字符编码转换成中文 java jdbc问题 java list排序问题 (初学java)一个关于输入输出的题目 不显示删除回复显示所有回复显示星级回复显示得分回复 小弟刚开始接触EJB3.0,熟悉HQL(JPQL)的进来下,请教个问题 请问如何用java语言监测端口的流量???谢谢大家 已经import java.lang.Math.*;为什么还要Math.sqrt(),不带Math.不行吗? 是高手才进来 关于static的问题: java编程思想第二版和第三版 谁更好些? 求助!如何控制光驱?
java.lang.Comparable d[];
sort(java.lang.Comparable data[]) { d=data; }
public void quickSort(int l,int r) {
if(l>=r) return;
int k=(l+r)/2;
int last=l;
swap(k,r);
for(int i=l;i<r;i++)
if(d[i].compareTo(d[r])==-1)
swap(last++,i); //partition
swap(last,r);
quickSort(l,last-1);
quickSort(last+1,r);
}
private void swap(int a,int b)
{
java.lang.Comparable t=d[a];
d[a]=d[b];
d[b]=t;
}
public static void main(String s[])
{
//for test
Integer t[]={ new Integer(4), new Integer(1), new Integer(3) };
new sort(t).quickSort(0,t.length-1);
for(int i=0;i<t.length;i++)
System.out.print(t[i]+" ");
System.out.println();
}
}
这里使用的是快排,算法复杂度o(nlogn)是平均状况下的。类的使用方法在main里面已经演示了,需要注意的是:为了模拟c++的template,我用了java.lang.Comparable接口,所以在使用基本数据类型的使用要用类封装。例如,int的封装类是Integer,double的封装类是Double。
for(int x=0; x<max-1; x++)
for( int y=0; y<max-1-x; y++)
if(array[y]>array[y+1])
{ charge value between array[y] and array[y+1]
..................}