Java的冒泡排序算法 [英] Java Bubblesort Algorithm

查看:184
本文介绍了Java的冒泡排序算法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想利用暑假练习更多的Java学习如何code算法变得更好。我有这个问题,我添加元素到我的ArrayList但不知何故,第一个数字我想补充还规定,我想避免在我的列表中的位置的数量。我只希望第0指数包含数字5,我似乎赶不上就如何解决这个问题的线索。

 公共类算法{

私人的ArrayList<整数GT;数;

公共算法(){

    数=新的ArrayList<整数GT;();
    numbers.add(5);
    numbers.add(4);
    冒泡();
}

公共静态无效的主要(字符串的args []){
    新算法();
}

公共无效冒泡(){

    的System.out.println(数字);
    对(INT一个= 0;一个与所述; numbers.size()){
        为(中间体B = 1; b将numbers.size()){
            INT currentNumber = numbers.get(一);
            如果(currentNumber> numbers.get(b))的{

                //Collections.swap(numbers,currentNumber,numbers.get(B));

                numbers.set(numbers.get(a)中,numbers.get(b))的;
                numbers.set(numbers.get(b)中,numbers.get(一));

                A ++;
                b ++;

            }否则如果(currentNumber< numbers.get(B)){
                A ++;
                b ++;
            }
            的System.out.println(数字);
        }
    }
}
}
 

解决方案

您没有正确交换的元素。而不是

  numbers.set(numbers.get(一),numbers.get(B));
numbers.set(numbers.get(b)中,numbers.get(一));
 

应该是

  INT TEMP = numbers.get(一);
numbers.set(一个,numbers.get(b))的;
numbers.set(B,温度);
 

I am trying to use the summer to practice more Java to get better by learning how to code algorithms. I have this problem where I add elements to my ArrayList but somehow the first number I add also sets the number of positions in my list which I want to avoid. I only want the 0th index to contain the number 5. I seem to not catch a clue on how to solve this.

public class Algorithms {

private ArrayList<Integer> numbers;

public Algorithms() {

    numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(4);
    bubblesort();
}

public static void main(String args[]) {
    new Algorithms();
}

public void bubblesort() {

    System.out.println(numbers);
    for (int a = 0; a < numbers.size();) {
        for (int b = 1; b < numbers.size();) {
            int currentNumber = numbers.get(a);
            if (currentNumber > numbers.get(b)) {

                //Collections.swap(numbers, currentNumber, numbers.get(b));

                numbers.set(numbers.get(a), numbers.get(b));
                numbers.set(numbers.get(b), numbers.get(a));

                a++;
                b++;

            } else if (currentNumber < numbers.get(b)) {
                a++;
                b++;
            }
            System.out.println(numbers);
        }
    }
}
}

解决方案

You are not swapping elements correctly. Instead of

numbers.set(numbers.get(a), numbers.get(b));
numbers.set(numbers.get(b), numbers.get(a));

it should be

int temp = numbers.get(a);
numbers.set(a, numbers.get(b));
numbers.set(b, temp);

这篇关于Java的冒泡排序算法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆