package com.zhang.day3;import java.util.Arrays;public class TestBubbleDemo {
public static void main(String[] args) {
int[] array = {1, 7, 3, 0, 8,2,5,9,4};
System.out.println(Arrays.toString(array));
bubble(array);
System.out.println(Arrays.toString(array));
}
public static void bubble(int[] array){
for (int i = 0; i < array.length - 1; i++) {
boolean flag = true;
for (int j = array.length - 1; j > i; j--) {
System.out.println(j);
swep(array[j - 1], array[j]);
flag = false;
}
if(flag)return;
}
}
public static void swep(int number1, int number2){
if(number1 > number2){
int temp;
temp = number1;
number1 = number2;
number2 = temp;
}
}
}问下为什么将交换的判断条件number1>number2放在swep函数中,在bubble函数中调用它时它不能达到交换的结果啊,求教啊啊,在线坐等大神啊
public static void main(String[] args) {
int[] array = {1, 7, 3, 0, 8,2,5,9,4};
System.out.println(Arrays.toString(array));
bubble(array);
System.out.println(Arrays.toString(array));
}
public static void bubble(int[] array){
for (int i = 0; i < array.length - 1; i++) {
boolean flag = true;
for (int j = array.length - 1; j > i; j--) {
System.out.println(j);
swep(array[j - 1], array[j]);
flag = false;
}
if(flag)return;
}
}
public static void swep(int number1, int number2){
if(number1 > number2){
int temp;
temp = number1;
number1 = number2;
number2 = temp;
}
}
}问下为什么将交换的判断条件number1>number2放在swep函数中,在bubble函数中调用它时它不能达到交换的结果啊,求教啊啊,在线坐等大神啊
在方法结束后,number1,number2仍保留原值。方法只操作了方法里的临时变量。要想达到目的,可以放到数组里。
{
public static void main(String[] args)
{
int[] array = {1, 7, 3, 0, 8,2,5,9,4};
System.out.println(Arrays.toString(array));
bubble(array);
System.out.println(Arrays.toString(array));
}
public static void bubble(int[] array)
{
for (int i = 0; i < array.length - 1; i++)
{
for (int j = array.length - 1; j > i; j--)
{
System.out.println(j);
if(array[j-1]>array[j])
{
int temp=array[j-1];
array[j-1]=array[j];
array[j]=temp;
}
}
}
}
}
import java.util.Arrays;public class TestBubbleDemo {
public static void main(String[] args) {
int[] array = { 1, 7, 3, 0, 8, 2, 5, 9, 4 };
System.out.println(Arrays.toString(array));
bubble(array);
System.out.println(Arrays.toString(array));
} public static void bubble(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
boolean flag = true;
for (int j = array.length - 1; j > i; j--) {
System.out.println(j);
swep(array, j - 1, j);//串的是数组的下标
flag = false;
}
if (flag)
return;
}
}
public static void swep(int[] a, int number1, int number2) { if (a[number1] > a[number2]) {
int temp;
temp = a[number1];
a[number1] = a[number2];
a[number2] = temp;
}
}
}
如果就想会简单的应用,不需要知道原理,在程序中跑不会报错,那遵循大学里面那些SB老师教授的所谓的“传值传引用”理论就可以。
另外,楼主函数名是想起swap吧
我看是传值的问题,swep(int number1,int number2)
在方法结束后,number1,number2仍保留原值。方法只操作了方法里的临时变量。要想达到目的,可以放到数组里。+1 值传递和引用传递问题.
public static void main(String[] args) {
int[] array = {1, 7, 3, 0, 8, 2, 5, 9, 4};
System.out.println(Arrays.toString(array));
bubble(array);
System.out.println(Arrays.toString(array));
}
public static void bubble(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
boolean flag = true;
for (int j = array.length - 1; j > i; j--) {
System.out.println(j);
array[j - 1] = array[j - 1] ^ array[j];
array[j] = array[j] ^ array[j - 1];
array[j - 1] = array[j - 1] ^ array[j];
flag = false;
}
if (flag) {
return;
}
}
}
}swep多余的, 直接换位就可以了, 交流一下~