写的一个冒泡排序,不知道哪里出了问题了,求指教package sz;
import java.io.*;public class sz {
public static void main(String[] args) {
int a[]={1,3,25,34,15,44,22,5,9,0};
System.out.println("排序结果为:");
Bouble(a);
}
static void Bouble(int a[]){
int i,j,temp;
for(j=0;j<a.length-2;j++){
for(i=0;i<a.length-j;i++){
if(a[i]>a[i+1]){
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
for(i=0;i<a.length;i++)
System.out.println(a[i]);
}
}
import java.io.*;public class sz {
public static void main(String[] args) {
int a[]={1,3,25,34,15,44,22,5,9,0};
System.out.println("排序结果为:");
Bouble(a);
}
static void Bouble(int a[]){
int i,j,temp;
for(j=0;j<a.length-2;j++){
for(i=0;i<a.length-j;i++){
if(a[i]>a[i+1]){
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
for(i=0;i<a.length;i++)
System.out.println(a[i]);
}
}
解决方案 »
- java Console类 readLine(String fmt, Object... args)
- java新手,请教各位前辈。
- 如何通过Field取得变量的值?(反射机制)
- js语句求解
- 获取某月的天数的方法是什么?--------------急救!
- 关于java获取操作系统路径的问题
- JTree问题:展开再折叠后不用makeVisible,scrollPathToVisible,scrollRectToVisible和scrollRowToVisible等不能看到指定节点
- 今天碰到的一个很多人都说是第一次碰到,而且想都没想到的问题,发出来共享一下
- JFrame 窗体图标设置 高手请进
- 外企招聘,欢迎刚毕业的大学生应聘!
- java swing,设置窗体无边框(title),怎么通过鼠标拖动调整大小
- java serializable 有没有序列化变量名?
我感觉你还是逻辑没理明白
for(i=0;i<a.length-j;i++){ if(a[i]>a[i+1]){ temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } }
这一块的代码逻辑上有点问题。
应该是先遍历10个,求出最大的排在第一位,
然后从第二个开始,遍历9个,求出最大的排在第二位,
依次类推。
等我10分钟,帮你调出来
public class Test1 {
public static void main(String[] args) {
int a[]={1,3,25,34,15,44,22,5,9,0};
System.out.println("排序结果为:");
Bouble(a);
}
static void Bouble(int a[]){
int i,j,temp = 0;
for(j=0;j<10;j++){
for(i=j;i<a.length;i++){
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
//System.out.println("本次循环最大数为"+a[j]);
}
for(int k=0;k<a.length;k++){
System.out.println(a[k]);
}
}
}
改成:
for(j=0;j<a.length-1;j++){
就可以了
你的思路是最大的放后面,我求的是最大数放前面,思路不一样。
for(i=0;i<a.length-j-1;i++){ 第一个循环的终止条件 a.length-1
第二个 a.length-j-1
public static void main(String[] args) {
int a[]={1,3,25,34,15,44,22,5,9,0};
System.out.println("排序结果为:");
Bouble(a);
}
static void Bouble(int a[]){
int i,j,temp;
//j代表第几次循环,总共需要循环次数为a.length-1;
//i代表本次循环的元素下标,然后和相邻的下一个(i+1)元素比较,
//所以i<a.length-j
for(j=1;j<a.length;j++){
for(i=0;i<a.length-j;i++){
if(a[i]>a[i+1]){
//如果第i个元素大于第(i+1)个元素,交换位置;
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
for(i=0;i<a.length;i++)
System.out.println(a[i]);
}
}
没太看明白你的代码是什么意思。
建议你加上注释,自己再认真思考一遍,,,,
不要凭感觉背代码。。