-
归属:蛮力法
-
算法复杂度:O(n^2)
-
稳定性:
- 冒泡排序:稳定
- 选择排序:不稳定
-
思想:
冒泡排序:遍历数组,当前下标的数大于后一个下标的数,则将两个下标的数交换,实现每一次遍历数组都移动一个最大元素到数组尾部(尾部排好序了则不再参加排序)。
选择排序:遍历数组,每次遍历记录最小的元素,第一次跟index=0交换,第二次跟index=1交换,以此类推,实现排序。 -
代码:
/**
* 冒泡排序
*/
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 + 1] < nums[j]) {
int aNum = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = aNum;
}
}
}
}
/**
* 选择排序
*/
public static void selectionSort(int[] nums) {
for(int i = 0; i < nums.length - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < nums.length; j++) {
if (nums[j] < nums[minIndex]) minIndex = j;
}
if (minIndex != i) {
int aNum = nums[minIndex];
nums[minIndex] = nums[i];
nums[i] = aNum;
}
}
}
网友评论