import java.util.Arrays;
public class BubbleSort {
public static void bubbleSort(int[] nums) {
for (int i = 0; i < nums.length - 1; i++) {
for (int j = 0; j < nums.length - 1 - i; j++) {
if (nums[j] > nums[j + 1]) {
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
System.out.println(Arrays.toString(nums));
}
public static void main(String[] args) {
int[] arr = { 2, 5, 15, 7, 1, 43, 561, 123 };
BubbleSort sort = new BubbleSort();
sort.bubbleSort(arr);
}
}
插入排序
import java.util.Arrays;
public class InsertSort {
public static void main(String[] args) {
int[] a = { 12, 1, 2, 4, 5, 32, 3, 156, 131, 78, 31 };
Sort(a);
}
/**
* 插入排序
*
* @param nums
*/
public static void Sort(int[] nums) {
for (int i = 1; i < nums.length; i++) {
// 找当前第i个元素应该放到i前面的元素的位置
int index = 0;
int target = nums[i];// 要插入的元素
// 循环找第一个比nums[i]还小的元素
for (int j = i - 1; j >= 0; j--) {
if (target > nums[j]) {
index = j + 1;
break;
}
}
// 插入元素
// 移动从index开始直到i的位置的所有元素
for (int j = i; j > index; j--) {
nums[j] = nums[j - 1];
}
nums[index] = target;
}
System.out.println(Arrays.toString(nums));
}
}
快速排序
public static void quickSort(int[] nums, int left, int right) {
if (left >= right) {
// 只有一个元素或者0个元素,无需排序
return;
}
int st = nums[left];// 参考值
int i = left;
int j = right;
while (i < j) {
// 从右边找到任何一个比st小的值挪到i所在的位置
while (i < j && nums[j] >= st) {
j--;
}
if (j > i) {
nums[i] = nums[j];
i++;// i的这个位置的元素一定是比st小的,所以无需再次参与比较和挪动
}
// 从左边i开始找任何一个j大的值挪动到j的位置
while (i < j && nums[i] < st) {
i++;
}
if (i < j) {
nums[j] = nums[i];
j--;
}
nums[i] = st;
}
quickSort(nums, left, i - 1);
quickSort(nums, i + 1, right);
System.out.println(Arrays.toString(nums));
}
插入排序
public void InsertionSort() {
int[] arr = { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48 };
for (int i = 1; i < arr.length; i++) {
// 定义待插入的数
int insertValue = arr[i];
// 找到待插入数的前一个数的下标
int insertIndex = i - 1;
while (insertIndex >= 0 && insertValue < arr[insertIndex]) {
arr[insertIndex + 1] = arr[insertIndex];
insertIndex--;
}
arr[insertIndex + 1] = insertValue;
}
System.out.println(Arrays.toString(arr));
}