问题:编写一个程序,用选择法对数组a[]={20,10,50,40,30,70,60,80,90,100}进行从大到小的排序。
程序:
package test;
public class ArraySort {
public static void main(String[] args){ int array[]={20,10,50,40,30,70,60,80,90,100}; int i,j,k,t;
for(i=0;i<array.length-1;i++){
k=i;
for(j=i+1;j<1;j++)
if(array[j]<array[k])k=j;
t=array[k];array[k]=array[i]=t;
}
for(i=0;i<l;i++)
System.out.println("array["+i+"]="+array[i]);
}
}输出的结果不尽人意,请教那出问题了。
程序:
package test;
public class ArraySort {
public static void main(String[] args){ int array[]={20,10,50,40,30,70,60,80,90,100}; int i,j,k,t;
for(i=0;i<array.length-1;i++){
k=i;
for(j=i+1;j<1;j++)
if(array[j]<array[k])k=j;
t=array[k];array[k]=array[i]=t;
}
for(i=0;i<l;i++)
System.out.println("array["+i+"]="+array[i]);
}
}输出的结果不尽人意,请教那出问题了。
解决方案 »
- 求一个汇编语言修改系统时间的代码!不胜感激
- 请问大牛带CheckBox的ComboBox应该怎么做?
- 高手指教,java读取Excel,html显示内容
- XML文件解析的问题--大家帮帮忙吧!
- 急问,如何用java实现提取数据库的数据显示在网页上
- 给个TCP/IP的通讯(client)的例子
- 请问现在企业一般性用什么java编译器????
- JAVA中有类似:replace(string,"abc","123")这样的替换函数吗?
- 一个粗浅的问题,请赐教。
- J2EE和J2SE能否装在同一台WIN2000上?
- java中对日期的异常处理?
- jni技术高手:java调用c++写的des加密dll程序,知道如何实现吗?
public class ArraySort {
public static void main(String[] args) {
int array[] = { 20, 10, 50, 40, 30, 70, 60, 80, 90, 100 }; int i, j, k, t;
int l = array.length; for (i = 0; i < array.length - 1; i++) {
k = i;
for (j = i + 1; j < l; j++)
if (array[j] < array[k])
k = j;
t = array[k];
array[k] = array[i] ;
array[i] = t;
}
for (i = 0; i < l; i++)
System.out.println("array[" + i + "]=" + array[i]);
}
}
package test; public class ArraySort {
//从大到小排序 选择法 每次取出一个最大的出来
public static void main(String[] args){ int array[]={20,10,50,40,30,70,60,80,90,100};
int i,j,k,t;
for(i=0;i <array.length-1;i++){
k=i;
for(j=i+1;j <array.length;j++)
if(array[j] >array[k])
k=j;
t=array[k];array[k]=array[i];array[i]=t;
}
for(i=0;i <array.length;i++)
System.out.println("array["+i+"]="+array[i]);
}
}
红色为楼主出错的地方
//从大到小排序 选择法 每次取出一个最大的出来
public static void main(String[] args){ int array[]={20,10,50,40,30,70,60,80,90,100}; int i,j,k,t; //冒泡
for(i=0;i <array.length-1;i++){
for(j=i+1 ;j <array.length;j++)
if(array[j] >array[i])
t=array[i];
array[i]=array[j];
array[j]=t;
} for(i=0;i <array.length;i++)
System.out.println("array["+i+"]="+array[i]);
}
}
所以上面的贴错了!
修改如下:
package test; public class ArraySort { public static void main(String[] args){ int array[]={20,10,50,40,30,70,60,80,90,100}; // i j 作为下标 t 作为临时交换数
int i,j,t; // 冒泡从大到小排序选择法每次冒出一个最大的数据
// 时间复杂度 为O(n*log2(n))
//
for(i=0;i <array.length-1;i++){
for(j=i+1 ;j <array.length;j++)
if(array[j] >array[i]) {
t=array[i];
array[i]=array[j];
array[j]=t;
}
}
// 输出结果:
for(i=0;i <array.length;i++){
System.out.println("array["+i+"]="+array[i]);
}
} }见谅!