欢迎讨论
回复 哪个算法+原因 即可
package Sort;
public class Sort {
/**
* 算法A
*/
public static void sortA() {
int a[] = { 10, 2, 3, 6, 5, 4, 9, 7, 1, 8 };
for (int i = 0; i <=a.length - 1; i++) {
for (int j = i + 1; j<=a.length - 1; j++) {
if (a[j] <= a[i]) {
int c = a[i];
a[i] = a[j];
a[j] = c;
}
}
}
for (int i = 0; i <= a.length - 1; i++) {
System.out.println(a[i]);
}
}
/**
* 算法B
*/
public static void sortB() {
int a[] = { 10, 2, 3, 6, 5, 4, 9, 7, 1, 8 };
for (int i = 0; i <=a.length - 1; i++) {
for (int j = 0; j< a.length - 1 - i; j++) {
if (a[j] >a[j+1]) {
int c = a[j];
a[j] = a[j+1];
a[j+1] = c;
}
}
}
for (int i = 0; i <= a.length - 1; i++) {
System.out.println(a[i]);
}
}
/**
* 算法C
*/
public static void sortC(){
int a[] = { 10, 2, 3, 6, 5, 4, 9, 7, 1, 8 };
int length = a.length;
while(true) {
boolean isEnd = true;
for(int i = 0; i < length - 1 ; i++) {
// 标识是否全部交换完毕
int before = a[i];
int behind = a[i + 1];
if(behind < before) { // 如果后面数的值<前面数的值,则交换
a[i] = behind;
a[i + 1] = before;
isEnd = false; // 没有交换完毕
continue;
} else if (i == length - 1) { // 如果最后一个人元素的场合下 还没有发生可以交换的事件
isEnd = true;
}
}
if(isEnd) {break;}
}
for(int n : a) {
System.out.print(n + ", ");
}
}
public static void main(String[] args) {
Sort.sortA();
Sort.sortB();
Sort.sortC();
}
}