bubblesort alg使用数组

时间:2013-09-05 17:50:53

标签: java arrays int bubble-sort

好的,所以我今天已经在这方面工作了一段时间,我知道它已经接近完成了。我一直试图找到一个逃避条款,我终于可以返回列表了。这是我所做的所有代码。

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package algorithm;

import java.util.Arrays;
import java.util.Collections;

/**
 *
 * 
 */
public class Algorithm {

    /**
     * @param args the command line arguments
     */
    private static int list[] = {10, 9, 8, 7, 6};

    public static void main(String[] args) {
        Algorithm alg = new Algorithm();
        alg.bubblesort(list);
    }

    public Algorithm() {
    }

    public int[] bubblesort(int[] i) {
        for (int a = 0; a < i.length;) {
            for (int b = 1; b < i.length + 1;) {
                int currentNumber = i[a];
                if (b < i.length) {
                    if (currentNumber > i[b]) {
                        i[a] = i[b];
                        i[b] = currentNumber;
                        a++;
                        b++;
                    } else if (currentNumber < i[b]) {
                        a++;
                        b++;
                    }
                } else if (b == i.length) {
                    a = 0;
                    b = 1;
                }
            }
        }
        return i;
    }

    public void isSorted(int[] i) {
        for (int x = 0; x < i.length;) {
            if (i[x + 1] < i[i.length - 1]) {
                if (i[x] < i[x + 1]) {
                    x++;
                }
            }
        }

        System.out.println(Arrays.toString(i));
    } 
}

好的,我的问题是如何才能返回最终排序列表?

3 个答案:

答案 0 :(得分:0)

进行冒泡排序的最简单方法是使用while循环,这样就不必嵌入for循环。

尝试一下:

public int[] bubblesort(int[] i) {
    int temp;
    int a = 0;

    while(a < (i.length - 1)) {
        if(i[a+1] < i[a]) {
            //Swap i[a] with i[a+1]
            temp = i[a];
            i[a] = i[a+1];
            i[a+1] = temp;
            //Reset counter
            a = 0;
        } else {
            //Increment counter if two elements are already in order
            a++;
        }
    }

    return i;
}

编辑:对于你的尝试在那里添加:

if(a == (i.length-1) {
    break;
}

一旦你的外部循环结束(这意味着它应该被排序),这应该突破循环。代码如下所示:

public int[] bubblesort(int[] i) {
    for (int a = 0; a < i.length;) {
        for (int b = 1; b < i.length + 1;) {
            int currentNumber = i[a];
            if (b < i.length) {
                if (currentNumber > i[b]) {
                    i[a] = i[b];
                    i[b] = currentNumber;
                    a++;
                    b++;
                } else if (currentNumber < i[b]) {
                    a++;
                    b++;
                }
            } else if (b == i.length) {
                a = 0;
                b = 1;
            }
        }
        //Break out of loop when it gets to the end
        if(a == (i.length - 1)) {
            break;
        }
    }
    return i;
}

答案 1 :(得分:0)

首先,您应该决定(1)您是直接更改list还是(2)。

alg.bubblesort(list);

我认为这句话的意思是(1)因为你没有抓住结果。如果你想做(2),那应该是

int[] result = alg.bubblesort(list);

并且,如果(1)更好,请修复defenition bubblesort

public void bubblesort (int[] args)

此外,您不应该使用int[] i,因为变量i通常表示数组的索引。

答案 2 :(得分:-1)

这是一个用Java实现的冒泡排序....

public class BubbleSort {

static int intArray[] = { 10, 5, 100, 1, 10000 };

public static void doSort() {
    for (int outer = 0; outer < intArray.length; outer++) {
        for (int inner = 0; inner < intArray.length - outer- 1; inner++) {
            if (intArray[inner] > intArray[inner + 1]) {
                int temp = intArray[inner];
                intArray[inner] = intArray[inner + 1];
                intArray[inner + 1] = temp;
            }
        }
    }
}

public static void printArray() {
    for (int i = 0; i < intArray.length; i++) {
        System.out.print("  " + intArray[i]);
    }
}

public static void main(String args[]) {
    System.out.print("Array Before Sorting->");
    printArray();
    doSort();
    System.out.print("\nArray After Sorting ->");
    printArray();
}

}

有关上述程序和冒泡排序的详细说明,请查看链接 - http://www.javabrahman.com/algorithms-in-java/bubble-sort-in-java/