黑马程序员技术交流社区
标题:
这怎么排不出来
[打印本页]
作者:
余善航
时间:
2013-1-7 23:55
标题:
这怎么排不出来
public static void name(int[] arr){
int q;
for(int e=0;e<arr.length-1;e++){
for(int u=0;u<arr.length-e-1;u++){
if(arr[e]<arr[e+1]){
q=arr[e];
arr[e]=arr[e+1];
arr[e+1]=q;
}
}
}
}
作者:
肖志锋
时间:
2013-1-8 00:08
你这是冒泡排序,所以 if(arr[e]<arr[e+1]){这句错了,把e改成内循环的u就可以了当然下面的换位置也要改成u的
作者:
高阳
时间:
2013-1-8 00:19
for(int e=0;e<arr.length-1;e++){
for(int e=0;u<arr.length-e-1;e++){
if(arr[e]<arr[e+1]){
int q=arr[e];
arr[e]=arr[e+1];
arr[e+1]=q;
}
}交换用的变量需要声明类型啊,还有,你的字母写错了,字母能排,不报错吗
}
作者:
陈丽莉
时间:
2013-1-8 09:57
本帖最后由 陈丽莉 于 2013-1-8 10:11 编辑
一楼说的很对,就是内循环的数据角标用混了。
内循环的大概意思是,先从arr[0]开始到arr[arr.length-1-1]都和它的后一位比较并按大小决定是否交换,这样一轮下来,arr[0]中的数就是已经比较出来的最大或最小值;然后再从arr[1]开始到arr[arr.length-1-1],比较自身和后一位的大小。。理解了这些,再好好思考一下,自然就不会将比较的角标弄混了。
为了直观,我把修改后的代码贴一下吧。
不知道怎么回事儿,回帖总是有下划线,还老不见了下脚标,没办法只好传截图了。
1.png
(3.13 KB, 下载次数: 33)
下载附件
2013-1-8 10:09 上传
作者:
陈丽莉
时间:
2013-1-8 10:02
本帖最后由 陈丽莉 于 2013-1-8 10:12 编辑
怎么回事。。 下划线去不掉啦 - -|||
【u】,用中文输入法写的下脚标,看看还在么。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2