数组排序算法推导-每日学习小结
选择排序
eg:int[] arr = { 1, 3, 5, 2, 4, 6};
思路分析:
代码实现:
/**
* 选择排序算法
*
* @param arr int类型数组
*/
public static void selectSort(int[] arr) {
// 外层循环,控制需要进行核心操作的次数,次数是数据量 - 1
for (int i = 0; i < arr.length - 1; i++) {
// 从 i值位置进行搜索
int index = i;
// 找出符合要求的极值下标位置
for (int j = i + 1; j < arr.length; j++) {
// if 之后是选择排序排序算法的核心
if (arr[index] < arr[j]) {
index = j;
}
}
// 交换
if (index != i) {
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
}
本例使用该方法输出结果:6 5 4 3 2 1
冒泡排序
eg:int[] arr = { 2, 4, 5, 3, 1};
思路分析:
代码实现:
/**
* 冒泡排序算法
*
* @param arr int类型数组
*/
public static void bubbleSort(int[] arr) {
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]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
本例使用该方法输出结果:1 2 3 4 5