兄弟们,有个题目帮个小忙

青苗长成花朵啦 2009-08-10 11:24:37
JAVA刚刚起步,遇到了一个题目:随即产生10个1-100内的整数,然后从大到小排序。
帮我说一下思路(尽量说的详细些,如用到哪个函数),着急等。。。。。。。呵呵非常感谢
...全文
171 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
pupppet 2009-08-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bigbug9002 的回复:]
用Random类的nextInt(99)产生0~99之间的随机数,不含99.结果加1就是1~100之同内的随机数了.

从大到小排序可以自己写一个算法。如果用现成的方法,可以用Arrays.sort(integerArray,Collections.reverseOrder());其中integerArray是你要排序的数组,数组的内容是Integer的,所以要你把int类型数组,转为Integer数组,结果还要到转回到int.
[/Quote]
这样足矣
kuangren987 2009-08-10
  • 打赏
  • 举报
回复
api
qiubojuncode 2009-08-10
  • 打赏
  • 举报
回复
1.Random ran =new Random();ran.nextInt(数值)+1
2.Math.random();
wanjunfu 2009-08-10
  • 打赏
  • 举报
回复
这个前不久用.net写过。random就OK。。。最后你稍微拓展下,新手嘛 要多钻的。。
huijiangpang 2009-08-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bigbug9002 的回复:]
从大到小的选择排序思路:
从i~array.length-1中选最大的元素和i交换。i从0到array.length-2循环就可以了。

Java codefor(int i=0;i<array.length-1;i++){
max=i;//假设从i~array.length-1中最大的数的下标是i;for(int j=i+1;j<array.length;j++){if(array[j]>array[max]){//找到了比array[max]还要大的数。 max=j;
}
}
交换array[i]和array[max]

}
[/Quote]

正解,不过个人认为可以稍微改进一下。
即循环一次可以交换所有需要交换的相邻的数据。

比如 5,7,3,12,1...
循环一次后:7,5,12,3,1.。。
bigbug9002 2009-08-10
  • 打赏
  • 举报
回复
从大到小的选择排序思路:
从i~array.length-1中选最大的元素和i交换。i从0到array.length-2循环就可以了。

for(int i=0;i<array.length-1;i++){
max=i;//假设从i~array.length-1中最大的数的下标是i;
for(int j=i+1;j<array.length;j++){
if(array[j]>array[max]){ //找到了比array[max]还要大的数。
max=j;
}
}
交换array[i]和array[max]

}
Sonyer_520 2009-08-10
  • 打赏
  • 举报
回复
楼上正解
applerockhool 2009-08-10
  • 打赏
  • 举报
回复
这么简单,看看API
bigbug9002 2009-08-10
  • 打赏
  • 举报
回复
用Random类的nextInt(99)产生0~99之间的随机数,不含99.结果加1就是1~100之同内的随机数了.

从大到小排序可以自己写一个算法。如果用现成的方法,可以用Arrays.sort(integerArray,Collections.reverseOrder());其中integerArray是你要排序的数组,数组的内容是Integer的,所以要你把int类型数组,转为Integer数组,结果还要到转回到int.

  • 打赏
  • 举报
回复
自己顶一个,呵呵
gadfly1981 2009-08-10
  • 打赏
  • 举报
回复
烂货,老师都白交你了,下次老师就教你们怎么到csdn上找答案,就行了。
bigbug9002 2009-08-10
  • 打赏
  • 举报
回复
光顾抄人家的代码了,原来a是Integer[]啊.


List<Integer> myList=Arrays.<Integer>asList(a);
Collections.reverse(myList);
System.out.println(myList);
这时a也反转了.

说明一个问题,数组和对应的List实际上是同一个东西的不同形式.

这样解释对吗?
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 fantasyzheng 的回复:]
初学的话先练习算法吧,不要调用方法!
[/Quote]
是啊,调用方法看的我晕了~~~~~~~
bigbug9002 2009-08-10
  • 打赏
  • 举报
回复
Collections.reverse(myList);//这个还能把a也reverse了?

奇也怪哉!
fantasyzheng 2009-08-10
  • 打赏
  • 举报
回复
初学的话先练习算法吧,不要调用方法!
bigbug9002 2009-08-10
  • 打赏
  • 举报
回复
import java.util.*;

public class Headache {

public static void main(String args[]) {
Random rand=new Random();
Integer[] a=new Integer[10];
for(int i=0;i<10;i++){
a[i]=rand.nextInt(99)+1;
}
System.out.println("排序之前:");
System.out.println(Arrays.toString(a));
//方法零:
Arrays.sort(a);
List<Integer> myList=Arrays.<Integer>asList(a);
Collections.reverse(myList);
System.out.println(myList);

//方法一
/*Arrays.sort(a);
for(int i=a.length-1;i>=0;i--){
System.out.print(a[i]);
if(i>0){
System.out.print(",");
}
}*/

//方法二
/*Arrays.sort(a,new Comparator<Integer>(){
public int compare(Integer o1, Integer o2) {
return o1.intValue()>o2.intValue()?-1:(o1.intValue()<o2.intValue()?1:0);
}});
*/
//方法三:
//Arrays.sort(a,Collections.reverseOrder());
System.out.println("排序之后:");
System.out.println(Arrays.toString(a));

}
}
zhangyong20081204 2009-08-10
  • 打赏
  • 举报
回复
赞成楼上的。应用到集合了。
bigbug9002 2009-08-10
  • 打赏
  • 举报
回复
我怎么记得,Collections.reverseOrder()不能排序基本数据?记错了?
bigbug9002 2009-08-10
  • 打赏
  • 举报
回复
顶楼上:

import java.util.*;

public class Headache {

public static void main(String args[]) {
Random rand=new Random();
Integer[] a=new Integer[10];
for(int i=0;i<10;i++){
a[i]=rand.nextInt(99)+1;
}
System.out.println("排序之前:");
System.out.println(Arrays.toString(a));
//方法一
/*Arrays.sort(a);
for(int i=a.length-1;i>=0;i--){
System.out.print(a[i]);
if(i>0){
System.out.print(",");
}
}*/

//方法二
/*Arrays.sort(a,new Comparator<Integer>(){
public int compare(Integer o1, Integer o2) {
return o1.intValue()>o2.intValue()?-1:(o1.intValue()<o2.intValue()?1:0);
}});
*/
//方法三:
Arrays.sort(a,Collections.reverseOrder());
System.out.println("排序之后:");
System.out.println(Arrays.toString(a));

}
}
kakagui 2009-08-10
  • 打赏
  • 举报
回复

public class Test {

public static void main(String args[]) {
Random rand=new Random();
Integer[] a=new Integer[10];
for(int i=0;i<10;i++){
a[i]=rand.nextInt(99)+1;
}

//方法一
/*Arrays.sort(a);
for(int i=a.length-1;i>=0;i--){
System.out.print(a[i]);
if(i>0){
System.out.print(",");
}
}*/

//方法二
Arrays.sort(a,new Comparator<Integer>(){
public int compare(Integer o1, Integer o2) {
return o1.intValue()>o2.intValue()?-1:(o1.intValue()<o2.intValue()?1:0);
}});
System.out.println(Arrays.toString(a));

}
}
加载更多回复(4)

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧