关于数组排序的问题。。
提问者:勾勾手不弃晗 | 浏览 次 | 提问时间:2017-02-18 | 回答数量:9
1 public class A{ 2 public static void main(String[] args){ 3 int arrayOflnts[] = {32,87,589,12,1076,2000,8,622,127}; 4 int temp; 5 for(int i=0;i<arrayOflnts.length;i++){ 6 for(int j=arrayOflnts.length-1;j>i;j--){ //i和j分别是用来代表什么的呢? 7 if(arrayOflnts>arrayOflnts[j]){ //不懂 8 temp = arrayOflnts; 9 arrayOflnts = arrayOflnts[j]; 10 arrayOflnts[j] = temp; 11 } 12 } 13 } 14 for(int k=0;k<9;k++){ 15 System.out.print(arrayOflnts[k] + \"
已有9条答案
天掉下来自己扛
回答数:217 | 被采纳数:86
2017-02-18 02:21:13
[s:462] [s:462] [s:462] [s:462]
不懂java,不过 if(arrayOflnts>arrayOflnts[j]){ 看起来有语法错误
if(arrayOflnts>arrayOflnts[j]){ //这个if语句是判断什么的呢?
temp = arrayOflnts;
arrayOflnts = arrayOflnts[j];
arrayOflnts[j] = temp;
这句初看应该是一个比较两个数字大小的,如果前面的数字大于后面的,则把它们的顺序交换
这个程序是用冒泡算法的排列数字大小,但是里面有错误
if(arrayOflnts>arrayOflnts[j]){
temp = arrayOflnts;
arrayOflnts = arrayOflnts[j];
arrayOflnts[j] = temp;
应该是这样才对
wenyuans96
回答数:145 | 被采纳数:4
2017-02-18 11:43:29
for(int j=arrayOflnts.length-1;j>i;j--){ // (1)注:分别用1和2来代替之两个地方
if(arrayOflnts>arrayOflnts[j]){ // (2)
这是一个冒泡排序,分为两个循环:
(1)是第二个循环。
(2)是判断这个数组是按升序,还是按降序排列的。
我在这里为两个循环举个例子如:1,2,3,4,5我用冒泡降序排列出来
1,2,3,4,5
2,1,3,4,5
2,3,1,4,5
2,3,4,1,5
2,3,4,5,1
现在,把2排上出
3,2,4,5,1
3,4,2,5,1
3,4,5,2,1
。。。。。类推。。。
把1,2,等排上出叫做第一个排列
而,把1排上去要又五次排列这个排列叫做第二个排列。
hell永远存在
回答数:128 | 被采纳数:82
2017-02-18 19:51:12
我觉得第二个for循环
要改改
for(int j=arrayOflnts.length-1;j>i;j--)
改成
for(int j=i+1;j<=arrayOflnts.length;j++)
1 public class A{ //类名
2 public static void main(String[] args){ //方法名
3 int arrayOflnts[] = {32,87,589,12,1076,2000,8,622,127}; //定义一个数组函数,有9个值。
4 int temp; //定义一个中间变量
5 for(int i=0;i<arrayOflnts.length;i++){ //定义临时变量i,i小于数组的长度9;
6 for(int j=arrayOflnts.length-1;j>i;j--){ //i和j分别是用来代表什么的呢?
/*
*这里定义的临时变量j,给的初始值是等于数组的长度9减1,即8;且要求j>i才能进入循环
*/
7 if(arrayOflnts>arrayOflnts[j]){ //这段对比是正确的,我好像在哪看过。不过我给不出一共理由。
8 temp = arrayOflnts;
9 arrayOflnts = arrayOflnts[j];
10 arrayOflnts[j] = temp;
11 }
12 }
13 }
//这个循环是为了打印需要。
14 for(int k=0;k<9;k++){
15 System.out.print(arrayOflnts[k] + " ");
16 }
17 System.out.println();
18 }
19 }
+++++++++++++++++++++++++++++++++++++++++++
第二行:
public static void main(String[] args){
规范写法(不算错误):
public static void main(String args[]){
第六行:
for(int j=arrayOflnts.length-1;j>i;j--){ //i和j分别是用来代表什么的呢?
i和j是分别对函数定义的两个临时变量,标记数组的。
1 public class A{
2 public static void main(String[] args){
3 int arrayOflnts[] = {32,87,589,12,1076,2000,8,622,127};
4 int temp;
5 for(int i=0;i<arrayOflnts.length;i++){
6 for(int j=arrayOflnts.length-1;j>i;j--){
// 这里的for循环 可不可以改为:for(int j=0;j<arrayOflnts.length;j++)
7 if(arrayOflnts>arrayOflnts[j]){ //如果一个数大于其他的数 是不是这样理解?
// 下面的这三句代码 是不是排序呢? 是怎么实现的呢?
8 temp = arrayOflnts; //将值大的数赋给temp 是不是这样理解?
9 arrayOflnts = arrayOflnts[j]; //这个是什么意思呢?
10 arrayOflnts[j] = temp; //这个又是什么意思呢?
11 }
12 }
13 }
14 for(int k=0;k<9;k++){
15 System.out.print(arrayOflnts[k] + " ");
16 }
17 System.out.println();
18 }
19 }