冒泡排序小题看一下错在哪里 第二层的循环条件 我记得是y<xx.length-1-i哎这东西当初都背过了~ 你网上搜一下仔细对比一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 for(int y = x;y<args.length-1;y++){if(args[y]>args[y+1])我现在就不明白为什么我把for(int y=x)改成for(int y =0,)就能通过?X起始不也是从0开始的吗》有区别吗? 第二层的循环条件 我记得是y<xx.length-1-i哎这东西当初都背过了~ 你网上搜一下仔细对比一下按照你说的我改了可是结果还是不对啊 package com.paixu;public class Page_maopao { public static void paixu(int[] args) { for (int x = args.length-1; x >0; x--) { for (int y = 0; y <x; y++) { if (args[y] >args[y + 1]) { int temp = args[y]; args[y] = args[y + 1]; args[y + 1] = temp; } } } } public static void printy(int[] args) { for (int x = 0; x < args.length; x++) { System.out.print(args[x] + ";"); } } public static void main(String[] args) { int[] P = { 8, 3, 4, 5, 18, 3 }; paixu(P); printy(P); }} 你这肯定是不对的。你只有跑第一圈内循环y的值是0,后面x++之后y的值也会变大~ 所以y必须初始化为0。 你这肯定是不对的。你只有跑第一圈内循环y的值是0,后面x++之后y的值也会变大~ 所以y必须初始化为0。我明白你的意思。。可是这道题y=0时内循环跑完后第一个数已经是最小了。。我后面直接不考虑他了从y=1开始比直接1和2比,0的位置上的数已经是最小了我完全不考虑了。。我现在就纳闷在为什么是3;4;3;按照道理不是3;3;4;吗? 你这是升序,第一次循环结束后,最大的数跑到了最后面;然后又开始从第一个开始比较,所以y的初始值一直是0;即: for (int y = 0; y < args.length-1-x; y++) 应该这么写:for(int i=0;i<aryLength-1;i++){ for(int j=0;j<aryLength-1-i;j++){ if(array[j]<array[j+1]){ int temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } } } 你将你这句代码:for(int x=0;x<args.length-1;x++) { for(int y = x;y<args.length-1;y++) {改为for(int x=0;x<args.length-1;x++) { for(int y = 0;y<args.length-1-x;y++) {即可,冒泡排序的基本思想大概是:以x为趟数,用y来控制每趟要比较的次数;比如:当args.length=5时,第一趟x=0,则内循环中y从0到3,从而比较4次;同理,第2趟,x=1,则内循环中y从0到2,从而比较3次;以此类推即可。 你这肯定不行 逻辑混乱了你这是升序排列 ,第一次x=0时,内层循环执行完毕,找到的是最大数并排列到了数组末尾第二次x=1是 内层循环却要从数组下标为1的后面的数开始比较大小,而不是从从数组的开始下标为0开始比较,显然不合逻辑最终造成了排序不正确,正确的内层循环应该是 for(int y = 0;y<args.length-1-x;y++) 你的第二层循环出问题了for (int y = 0; y < args.length-x-1; y++) 如果你把y初始为x,那后面就不是y的值返回不了第一个 一个正则表达式 菜鸟提问。。赋值的问题。。 java Graphics内存问题 请帮我看一下:用java语言写的BUTTON事件处理,背景色总是红色,哪里有点点小问题呢~~~~~~ 问一个关于PREPAREDSTATEMENT套在一个循环里的问题,有关性能的,在线等待,分不够再加 熟悉JAVA画图的达人乱进 请教:初学JAVA,用哪种编程工具?除了JDK! 网络编程 面试题。 请问用JBuilder5怎样打包? java小计算 求这段代码的执行顺序
{
if(args[y]>args[y+1])
我现在就不明白为什么我把for(int y=x)改成for(int y =0,)就能通过?X起始不也是从0开始的吗》有区别吗?
哎这东西当初都背过了~ 你网上搜一下仔细对比一下
按照你说的我改了可是结果还是不对啊
public static void paixu(int[] args) {
for (int x = args.length-1; x >0; x--) {
for (int y = 0; y <x; y++) {
if (args[y] >args[y + 1]) {
int temp = args[y];
args[y] = args[y + 1];
args[y + 1] = temp;
}
}
}
} public static void printy(int[] args) {
for (int x = 0; x < args.length; x++) {
System.out.print(args[x] + ";");
}
} public static void main(String[] args) {
int[] P = { 8, 3, 4, 5, 18, 3 };
paixu(P);
printy(P);
}
}
我明白你的意思。。可是这道题y=0时内循环跑完后第一个数已经是最小了。。我后面直接不考虑他了从y=1开始比直接1和2比,0的位置上的数已经是最小了我完全不考虑了。。我现在就纳闷在为什么是3;4;3;按照道理不是3;3;4;吗?
for(int i=0;i<aryLength-1;i++){
for(int j=0;j<aryLength-1-i;j++){
if(array[j]<array[j+1]){
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
for(int x=0;x<args.length-1;x++)
{
for(int y = x;y<args.length-1;y++)
{
改为
for(int x=0;x<args.length-1;x++)
{
for(int y = 0;y<args.length-1-x;y++)
{
即可,冒泡排序的基本思想大概是:以x为趟数,用y来控制每趟要比较的次数;
比如:
当args.length=5时,第一趟x=0,则内循环中y从0到3,从而比较4次;同理,第2趟,x=1,则内循环中y从0到2,从而比较3次;
以此类推即可。
第二次x=1是 内层循环却要从数组下标为1的后面的数开始比较大小,而不是从从数组的开始下标为0开始比较,显然不合逻辑
最终造成了排序不正确,正确的内层循环应该是 for(int y = 0;y<args.length-1-x;y++)
如果你把y初始为x,那后面就不是y的值返回不了第一个