Java中用foreach对整数数组进行排序
所以我得到了这个学校作业: 编写一个方法,获取两个整数数组,并使用foreach循环将Java中用foreach对整数数组进行排序,java,arrays,sorting,foreach,int,Java,Arrays,Sorting,Foreach,Int,所以我得到了这个学校作业: 编写一个方法,获取两个整数数组,并使用foreach循环将x[]排序为y[] x[]的大小为10,所有元素都用Math.random()初始化,y[]的大小为10,并用零填充。该方法应将x[]数组排序为y[]和返回y[] 因为我只剩下foreach,所以我无法找到一种方法来引用数组中的其他元素来比较它们。有什么想法吗?int[]疯狂排序(int[]x,int[]y){ int[] crazySort(int[] x, int[] y) { System.ar
x[]
排序为y[]
x[]
的大小为10,所有元素都用Math.random()
初始化,y[]
的大小为10,并用零填充。该方法应将x[]
数组排序为y[]
和返回y[]
因为我只剩下foreach,所以我无法找到一种方法来引用数组中的其他元素来比较它们。有什么想法吗?int[]疯狂排序(int[]x,int[]y){
int[] crazySort(int[] x, int[] y) {
System.arraycopy(x, 0, y, 0, x.length);
int i = 1; // cheating
for (int n : y) { // <- this is your foreach, you will never use the n variable :D
if (i == x.length) break; // cheating again
for (int j = i-1; j >= 0; j--) { // finally doing something reasonable
if (y[j+1] < y[j]) {
int temp = y[j+1];
y[j+1] = y[j];
y[j] = temp;
}
}
i++;
}
return y;
}
数组复制(x,0,y,0,x.length);
int i=1;//作弊
对于(int n:y){/=0;j--){//最终做了一些合理的事情
if(y[j+1]
希望老师觉得它有趣,至少和练习说明一样有趣。这个解决方案使用java“foreach”循环,练习语句并没有告诉您只使用它。这是我100%认真的回答
public static void completelyLegitSort(int[] x,int[] y){
for(int n:x){
System.arraycopy(x, 0, y, 0, x.length);
java.util.Arrays.sort(y);
break;
}
}
你说的“因为我只剩下foreach了,所以我想不出一种方法来引用数组中的其他元素来比较它们”是什么意思?Java有一种foreach语句
for(elem:collection){}
但你确定必须使用它吗?@RaulGogo:我在寻找一种方法来做一些类似于经典for循环的事情:“如果(x[I]Math.random()
返回一个double
,您正在排序整数
-您计划如何将double
转换为int
?您可以使用手动递增的计数器进行欺骗,并执行简单的插入排序。int[]x=new int[]{15,10,7,1,7,6,27,8,2,17};int[]y=新的int[10];整数指数;整数计数;对于(inti1:x){index=0;count=0;对于(inti2:x){if(i2
很抱歉格式化。我的一个朋友终于找到了答案。你朋友的解决方案似乎很“黑”,足以得到一个好分数P改变变量的名称,放几个无用的计数器,你就完成了。+1你是个天才!但是要有礼貌,不允许更改数组x!:DWhy调用java.util.Arrays.sort(y)代码>在for循环内(x.length次),而不是在循环后一次调用?@alfasin:循环在第一次调用后中断iteration@alfasin当前位置赞恩和我只是在开老师奇怪的练习的玩笑。基本上,他/她要求学生用锤子拧东西。我们接受了挑战,并喜欢寻找肮脏的工作环境来做练习。赞恩比我更轻蔑。@gd1我明白:)但为什么不直接使用赞恩回答中的第3-4行呢?