好的,所以我今天已经在这方面工作了一段时间,我知道它已经接近完成了。我一直试图找到一个逃避条款,我终于可以返回列表了。这是我所做的所有代码。
/*
* 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));
}
}
好的,我的问题是如何才能返回最终排序列表?
答案 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/