黑马程序员技术交流社区
标题:
冒泡排序遇到的问题
[打印本页]
作者:
执剑、砍人
时间:
2015-6-7 06:52
标题:
冒泡排序遇到的问题
public class BubbleDemo {
public static void main(String[] args) {
int[] arr = { 3, 4, 9, 2, 5 };// 定义一个数组
//打印数组
for (int x = 0; x < arr.length; x++) {
System.out.print(arr[x]);
}
System.out.println("--------------------");
array(arr);//定义排序功能
//讲排玩序后的数组打印
for (int y = 0; y < arr.length; y++) {
System.out.print(arr[y]);
}
}
public static void array(int[] arr){
// 进行arr.length-1次的轮的从前到后的比较
for (int i = 0; i < arr.length - 1; i++) {
// 讲少数组相邻的两个数比较,大的往后放
for (int j = 0; j < arr.length-1-i; j++) {
if (arr[j] > arr[j++]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
}
输出的结果都是原数组,方法没有用
作者:
邱石
时间:
2015-6-7 07:16
public static void array(int[] arr) {
// 进行arr.length-1次的轮的从前到后的比较
for (int i = 0; i < arr.length - 1; i++) {
// 讲少数组相邻的两个数比较,大的往后放
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j+1]) {//问题出在这里,比较的时候不能用arr[j]和arr[j++]比较
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
复制代码
-------------------------------------------------
if (arr[j] > arr[j+1]) {//问题出在这里,比较的时候不能用arr[j]和arr[j++]比较
因为j++是先应用后加加,你这里的arr[j]>arr[j++]就相当于arr[j]>arr[j].
所以把arr[j]和arr[j++]中的arr[j++]改成arr[j+1]就行了。
作者:
开弓没有回头箭
时间:
2015-6-7 08:45
2楼正解
作者:
qq479470741
时间:
2015-6-7 08:51
比较的时候是数组前一个和数组后一个比,而你用j++就是就是自己和自己比了,因为j++是先赋值后++。
作者:
老徐
时间:
2015-6-7 10:37
顶贴,大家都好努力啊
作者:
meng12
时间:
2015-6-7 12:49
if (arr[j] > arr[j++]) 是把y角标和y+1角标进行比较,不是和y++,
而且++放到右边是先运算在自增,++放在左边是先自增在运算。
作者:
痞子刘忙
时间:
2015-6-7 13:12
if (arr[j] > arr[j++]) 这个的问题,学习了
作者:
storer
时间:
2015-6-7 13:24
就是上面说的问题。。学习了
作者:
storer
时间:
2015-6-7 13:27
就是上面说的问题。。学习了
作者:
qian0217wei
时间:
2015-6-7 13:32
改成++j就不会有这个问题了
作者:
武汉小菜鸟
时间:
2015-6-7 15:10
if (arr[j] > arr[j++]) 这句有错
作者:
wwb1105
时间:
2015-6-7 15:49
楼上大神多 学习了
作者:
付欢
时间:
2015-6-7 16:14
你的J++还是没有理解透彻啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2