import java.util.List; import java.util.ArrayList; import java.util.Collections; String[] array = {"1", "22.7", "13.5", "35", "78", "95"}; List list = new ArrayList(); for (int i = 0, arrayLength = array.length; i < arrayLength; i++) list.add(array[i]);Collections.sort(list);//升序 Collections.sort(list, Collections.reverseOrder());//降序for (int i = 0, size = list.size(); i < size; i++) System.out.println(list.get(i));==============================================使用pleonheart(只睡六小时) 方法 , 其它的都是舍近求远的方法。
数组有个方法 Arrays.sort(数组);可以排序
那你厉害,你帮我写一个啊,就是用JSP写啊!
安装JDK的路径里就有例子源码,何必舍近求远呢
void sort(int[] Array)throws Exception{ if(Array==null||Array.length()<=1) return; for(i=1;i<Array.length();i++){ for(int j=i;j>0;j--){ if(Array[j]<Array[j-1]){ int t=Array[j]; Array[j]=Array[j-1]; Array[j-1]=t; } } } } 还有那个人说先写数据库,再排序取出,效率太低,最好不要用,因为数据库的操作开销很大。思路为:建一表data,只有一字段field,把要排序的数据全写入这个字段,然后用一SQL语句排序取出:select * from data order by field desc;然后把结果依次存入目的数组即可。
import java.util.ArrayList;
import java.util.Collections;
String[] array = {"1", "22.7", "13.5", "35", "78", "95"};
List list = new ArrayList();
for (int i = 0, arrayLength = array.length; i < arrayLength; i++)
list.add(array[i]);Collections.sort(list);//升序
Collections.sort(list, Collections.reverseOrder());//降序for (int i = 0, size = list.size(); i < size; i++)
System.out.println(list.get(i));
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
String[] array = {"1", "22.7", "13.5", "35", "78", "95"};
List list = new ArrayList();
for (int i = 0, arrayLength = array.length; i < arrayLength; i++)
list.add(array[i]);Collections.sort(list);//升序
Collections.sort(list, Collections.reverseOrder());//降序for (int i = 0, size = list.size(); i < size; i++)
System.out.println(list.get(i));==============================================使用pleonheart(只睡六小时) 方法 , 其它的都是舍近求远的方法。
if(Array==null||Array.length()<=1)
return;
for(i=1;i<Array.length();i++){
for(int j=i;j>0;j--){
if(Array[j]<Array[j-1]){
int t=Array[j];
Array[j]=Array[j-1];
Array[j-1]=t;
}
}
}
}
还有那个人说先写数据库,再排序取出,效率太低,最好不要用,因为数据库的操作开销很大。思路为:建一表data,只有一字段field,把要排序的数据全写入这个字段,然后用一SQL语句排序取出:select * from data order by field desc;然后把结果依次存入目的数组即可。
void sort(int[] Array)throws Exception{
if(Array==null||Array.length()<=1)
return;
for(int i=0,k=Array.length();i<k-1;i++){
if(Array[i]>Array[i+1]){
int t=Array[i];
Array[i]=Array[i+1];
Array[j+1]=t;
k=j;
}
}
}
这个冒泡排序算法效率高些。
if(Array==null||Array.length()<=1)
return;
int k=Array.length()-1;
for(int j=k;j>0;j--){
for(int i=0;i<k;i++){
if(Array[i]>Array[i+1]){
int t=Array[i];
Array[i]=Array[i+1];
Array[j+1]=t;
k=j;
}
}
}
}
void sort(int[] Array)throws Exception{
if(Array==null||Array.length()<=1)
return;
int k=Array.length()-1;
for(int j=k;j>0;j=k){
for(int i=0;i<j;i++){
if(Array[i]>Array[i+1]){
int t=Array[i];
Array[i]=Array[i+1];
Array[i+1]=t;
k=i;
}
}
}
}
不好意思,我这个马大哈又写错了,正确的为下面形式
void sort(int[] Array)throws Exception{
if(Array==null||Array.length()<=1)
return;
int k=Array.length()-1;
for(int j=k;j>0;j=k){
for(int i=0;i<j;i++){
if(Array[i]>Array[i+1]){
int t=Array[i];
Array[i]=Array[i+1];
Array[i+1]=t;
k=i;
}
}
}
}
====================================兄弟,你能不能理解JAVA的特点?别人房子都给你建好了,就差装修了。你还要再建一栋房子?说笑了
void sort(int[] Array)throws Exception{
if(Array==null||Array.length()<=1)
return;
int k=Array.length()-1;
for(int j=k;j>0;j=k){
k=0;
for(int i=0;i<j;i++){
if(Array[i]>Array[i+1]){
int t=Array[i];
Array[i]=Array[i+1];
Array[i+1]=t;
k=i;
}
}
}
}
====================================兄弟,你能不能理解JAVA的特点?别人房子都给你建好了,就差装修了。你还要再建一栋房子?说笑了
==========================================================
二楼老兄,我知道java在数组Arrays类及聚合Collections中提供了一个sort()方法来对实现了Comparable接口的Object对象进行排序。
但它提供的方法对我们来说是黑洞,不知其排序效率如何,我认为还是用经典排序算法心里有底,我们可以根据实际情况选择恰当算法,比如快速排序,堆排序,改进冒泡排序等,而且这些经典排序算法对任何语言都一样,不受限于JAVA语言。你说呢?
不好意思,我这个马大哈又写错了,正确的为下面形式
void sort(int[] Array)throws Exception{
if(Array==null||Array.length()<=1)
return;
int k=Array.length()-1;
for(int j=k;j>0;j=k){
k=0;
for(int i=0;i<j;i++){
if(Array[i]>Array[i+1]){
int t=Array[i];
Array[i]=Array[i+1];
Array[i+1]=t;
k=i;
}
}
}
}
====================================兄弟,你能不能理解JAVA的特点?别人房子都给你建好了,就差装修了。你还要再建一栋房子?说笑了
==========================================================
二楼老兄,我知道java在数组Arrays类及聚合Collections中提供了一个sort()方法来对实现了Comparable接口的Object对象进行排序。
但它提供的方法对我们来说是黑洞,不知其排序效率如何,我认为还是用经典排序算法心里有底,我们可以根据实际情况选择恰当算法,比如快速排序,堆排序,改进冒泡排序等,而且这些经典排序算法对任何语言都一样,不受限于JAVA语言。你说呢?
================================================================你详细说一下为什么它提供的方法不知其排序效率如何,你自己写的算法就有底?如果你认为JVM提供的方法对我们来说是黑洞 ,那么你的经典排序算法一样建立在JVM这个大黑洞上。JVM是建立在WINDOWS这个黑洞上,windows也是建立在INTEL CPU这个大黑洞上。你是不是认为SUN和Microsoft也是没底?你的逻辑有错误。
======================================================
试问老兄,它提供的排序算法时间复杂度是O(n2),O(n),O(log2N),O(nlog2N),到底是哪一个还是哪几个?如果我们不知道或无法预测,它对我们一般用户来说就是黑洞。再有它是否会根据待排序数组的本身特性自动选择排序算法以达到时空效率最佳,我不知道JVM在这方面的实现细节,是否具有这方面的智能,希望兄弟讲一下。
但我知道一点:每一种经典排序算法的排序时空效率我们都可以预见,还有每一种经典排序算法都适合有某些特征的数组,才能达到理想效果,就拿快速排序算法来说,当待排序数组刚好逆序时,它的时间效率差到O(n2);而达不到它的理想状态O(nlog2N),而传统冒泡排序在某些情况下能达到O(n).这样我们在对一个数组排序时,如果我们自已写程序实现,我们可以根据数组当前特征以及将来大部分特征选择适合于此数组的最优排序算法。不知道java自带的排序方法sort()是否也会这么做------根据数组特征自动调整排序算法以达到最佳性能。
为什么现在有的功能人家还用汇编语言实现而不用高级语言,道理相同,就是用汇编语言灵活性很高,自己可直接控制的东西很多。当然它还有一个重要原因是汇编语言执行快,目标代码少等。
java自带的包与我们自己写的java程序是一个水平层次上的,它也像我们普通java程序一样在JVM上运行,其实它也是一般的java程序。我们刚才比较的就是两个java程序的效率,是用它自带的好还是自己亲自写好。这根JVM实现毫无关系,因为无论它怎么实现,它对两者一视同仁,提供一样的运行支持。
我认为自已写好,更灵活,可能能取得更大的运行效率,但多花一点写程序的时间。
你认为用它自带的好,少花写程序的时间,但我认为可能达不到理想时空效率。
关键问题是不知道它那个包中对这个sort()排序方法的实现细节,是否是只采用一种排序算法对所有数组或聚合进行实现,还是有点智能,自动调整实现算法,以达到最佳性能。
但它提供的方法对我们来说是黑洞,不知其排序效率如何,我认为还是用经典排序算法心里有底,我们可以根据实际情况选择恰当算法,比如快速排序,堆排序,改进冒泡排序等,而且这些经典排序算法对任何语言都一样,不受限于JAVA语言。你说呢?
================================================== 你认为JVM提供的排序方法对我们来说是黑洞,所以你要自己写排序算法。
你为什么不认为JVM虚拟机对我们来说是黑洞,我们也要自己写虚拟机。 你的想法根本就是错,我们既然认为JVM是值得信任的,为什么我们不信任它的算法。为什么你信任JVM,为什么你就偏偏不信任它的排序算法。你认为JVM提供的排序方法对我们来说是黑洞,为什么你不认为JVM的其它部分对我们也是黑洞 你如果不懂使用JAVA的排序算法,只好自己写,那是权宜之计。如果你的算法比JAVA的强,你不屑于使用JAVA的排序算法,你强。 你说你到底的目的是想搞什么 ,我说你舍近求远有什么错。
你给我指出来。
哦,对了,我还要补充一下,java语言与JVM是两回事,所有的JAVA语言都要在jvm上运行,当然包括我们自己写的程序与java自带的包(就包括java.util.*),但是要搞清一点:
java自带的包与我们自己写的java程序是一个水平层次上的,它也像我们普通java程序一样在JVM上运行,其实它也是一般的java程序。我们刚才比较的就是两个java程序的效率,是用它自带的好还是自己亲自写好。这根JVM实现毫无关系,因为无论它怎么实现,它对两者一视同仁,提供一样的运行支持。
我认为自已写好,更灵活,可能能取得更大的运行效率,但多花一点写程序的时间。
你认为用它自带的好,少花写程序的时间,但我认为可能达不到理想时空效率。
关键问题是不知道它那个包中对这个sort()排序方法的实现细节,是否是只采用一种排序算法对所有数组或聚合进行实现,还是有点智能,自动调整实现算法,以达到最佳性能。
===================================================你自己写一个JVM不好,更灵活。你还可以通过一些方法使用JVA解释得更快。最大不好就是要多花一点时间而已,而且自己写JVM,JVM对自己就是透明的,不是黑洞了。^-^