java冒泡排序,竟然错了?

int[] ns={1,2,3,4,5,6}
int t=0;
for(int i=0;i<6;i++){
for(int j=5;j>0;j--){
if(ns[j]>ns[j-1])
t=ns[j];
ns[j]=ns[j-1];
ns[j-1]=t;
这段代码竟然不能实现对数组ns的排序,错在何处?

第1个回答  2011-10-01
你好,明确的告诉你,算法对着呢,就是你代码语法上有点错。正确代码:
public class Sort {
public static void main(String[] args) {
int[] ns = { 1, 6, 3, 4, 5, 2 };
int t = 0;
for (int i = 0; i < 6; i++) {
for (int j = 5; j > 0; j--) {
if (ns[j] > ns[j - 1]){
t = ns[j];
ns[j] = ns[j - 1];
ns[j - 1] = t;
}
}
}
print(ns) ;
}

public static void print(int[] array){
for(int i=0;i<array.length;i++){
System.out.print(array[i] + " ");
}
}
}
第2个回答  2011-10-01
注意 if(ns[j]>ns[j-1]) 后面要有括号, if中要 执行 三条语句进行交换
所以 应该是:
if(ns[j]>ns[j-1])
{
t=ns[j];
ns[j]=ns[j-1];
ns[j-1]=t;
}
===========================
另外: 送你个 不用第三个变量来交换的算法:
ns[j]=ns[j]+ns[j-1];
ns[j-1]=ns[j]-ns[j-1];
ns[j]=ns[j]-ns[j-1];
记得给分哦本回答被提问者采纳
第3个回答  2011-09-30
你觉得你写的第一个循环有用吗?
第4个回答  2011-09-30
for(int i=0;i<6;i++){
for(int j=5;j>i;j--){
if(ns[j]>ns[j-1])
t=ns[j];
ns[j]=ns[j-1];
ns[j-1]=t;
}
}
相似回答