图解说明可以参考https://blog.youkuaiyun.com/qq_31702609/article/details/81293023
java版冒泡排序代码如下
import java.util.Arrays;
public class BubbleSort {
//way=1 为升序 way=2为降序
public static void sort(int[] arr, int way) {
int temp;
if (way == 1) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
System.out.println("第"+(i+1)+"趟排序的结果:"+ Arrays.toString(arr));
}
}
if (way == 2) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] < arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
System.out.println("第"+(i+1)+"趟排序的结果:"+ Arrays.toString(arr));
}
}
}
//改进版
//思路:如果在某一轮比较中没有一次交换,则可以提前终止
public static void sortUpgrade(int[] arr, int way) {
int temp;
if (way == 1) {
for (int i = 0; i < arr.length - 1; i++) {
int count = 0;
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
count++;
}
}
if (count==0)
break;
System.out.println("第"+(i+1)+"趟排序的结果:"+ Arrays.toString(arr));
}
}
if (way == 2) {
for (int i = 0; i < arr.length - 1; i++) {
int count = 0;
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] < arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
count++;
}
}
if (count==0)
break;
System.out.println("第"+(i+1)+"趟排序的结果:"+ Arrays.toString(arr));
}
}
}
}
java版的选择排序代码如下
import java.util.Arrays;
public class SelecSort {
public static void sort(int[] arr) {
int max;
int temp;
for (int i = 0; i < arr.length - 1; i++) {
int index = i;
max = arr[i];
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] > max) {
max = arr[j];
index = j;
}
}
temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
}