黑马程序员技术交流社区
标题:
看看这冒泡排序
[打印本页]
作者:
demown
时间:
2014-4-11 23:40
标题:
看看这冒泡排序
不知道错哪了 编译过不去求解
class Renmingzi{
public static void main(String[] ages)
{
int[] arr={1,2,3,7,6,5,4,};
bullinet(arr);
arrA(arr);
}
public static void arrA(int[] arr){
System.out.println("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1){
System.out.println("x="+arr[x]+",");}
else{
System.out.println("x="+arr[x]+"]");
}
}}
public static void bullinet(int[] arr)
{
for(int x = 0;x<=arr.length-1;x++)
{
for(int y = 0;y<=arr.length-1;y++)
{
if(arr[y]<arr[y+1])
{
int temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
}
}
作者:
caijunsong
时间:
2014-4-12 00:37
class Demo{
public static void main(String[] ages)
{
int[] arr=new int[]{1,2,3,7,6,5,4,};//你这里声明的数组语法就错了
arrA(arr);
bullinet(arr);
arrA(arr);
}
public static void arrA(int[] arr)
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)
{
System.out.print("x="+arr[x]+",");//这里的打印我给你改成不换行的了
}
else
{
System.out.print("x="+arr[x]+"]");//同上
}
}
}
public static void bullinet(int[] arr)
{
//x不能<=arr.length-1,等于的话就是比较7次了
for(int x = 0;x<arr.length-1;x++)
{
//y不能小于等于,否则就计算7次,同时冒泡的比较是逐级递减的,你没有减x
for(int y = 0;y<arr.length-1-x;y++)
{
if(arr[y]<arr[y+1])
{
int temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
}
}
}
//冒泡排序的算法就是从第一次开始与其余的每一个比较,把最大的一个放在适合的位置
//有n个元素 那么久要把1,。。。n-1,的元素和其之后的元素比较(最后一个不需要比) 每个要比n-1,。。。1次
复制代码
作者:
清风夜独醉
时间:
2014-4-12 02:44
首先什么是冒泡排序?
冒泡排序就是依次比较相邻的两个数,如果你是按升幂排序,那么就是每次比较完把小数放前面,大数放后面;如果是按降幂排序,就是把大数放前面,小数放后面。
冒泡排序每轮的比较次数都是依次递减的。比如你这数组有7个元素,第一轮比较6次,第二轮比较5次,依次类推……
用二重循环实现,就是外循环变量设为x,内循环变量设为y。则外循环重复6次,内循环依次重复6,5,...,1次。每次进行比较的两个元素都是与内循环y有关的,它们可以分别用a[y]和a[y+1]标识,x的值依次为1,2,...,6,对于每一个x,y的值依次为1,2,...6-x。
所以你检查一下你内外循环的次数就不难发现错在哪了。你的外循环重复了7次,而你的内循环也没有递减。
作者:
demown
时间:
2014-4-12 09:40
你们回复还是没明白 不过很感谢 就是在我内循环为啥递减呢 递减成啥了 我自己搞明白了就是把 y=< 把等号去掉就行了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2