public class Test4 {
public static void main(String[] args) {
int[] arrays = {1,4,2,3,9,5,6};
int t;
for(int i=0; i<arrays.length; i++) {
for(int j=++i; j<arrays.length; j++) {
if(arrays[i] < arrays[j]) {
t = arrays[i];
arrays[i] = arrays[j];
arrays[j] = t;
}
}
}
for(int z=0; z<arrays.length; z++) {
System.out.print(arrays[z]+" ");
}
}
}
我在做练习的时候,为什么我写这个算法不对呢?排的顺序不是从大到小,问题出在哪了?
public static void main(String[] args) {
int[] arrays = {1,4,2,3,9,5,6};
int t;
for(int i=0; i<arrays.length; i++) {
for(int j=++i; j<arrays.length; j++) {
if(arrays[i] < arrays[j]) {
t = arrays[i];
arrays[i] = arrays[j];
arrays[j] = t;
}
}
}
for(int z=0; z<arrays.length; z++) {
System.out.print(arrays[z]+" ");
}
}
}
我在做练习的时候,为什么我写这个算法不对呢?排的顺序不是从大到小,问题出在哪了?
j=++i;
相当于 i = i+1; j = i;
但是你的本意只是想让j = i + 1并不想让i的值在这里发生变化 所以错了
应该改成 for(int j=i + 1; j<arrays.length; j++)
j = i +1; i的值不会发生变化
打错了,j=j+1或者j=0,j<array.lengt-1
int sum []={4,2,3};
int sums=0;
for(int i=0;i<sum.length-1;i++){
for(int j=0;j<sum.length-i-1;j++){
if(sum[j]>sum[j+1]){
sums=sum[j];
sum[j]=sum[j+1];
sum[j+1]=sums;
}
}
}
for(int i=0;i<sum.length;i++){
System.out.println(sum[i]);
}