算法数据结构 思维导图学习系列(2)- 排序算法 10种排序算法 冒泡排序(Bubble Sort) 选择排序(Selection Sort) 插入排序(Insertion Sort) 希尔排序(Shell Sort) 归并排序(Merge Sort) 快速排序(Quick Sort) 堆排序(Heap Sort) 计数排序(Counting Sort) 桶排序(Bucket Sort) 基数排序(Radix Sort)
//冒泡
//冒泡 升序比较2个值,把大值交换到后面,在进行和下一个值比较
private int [] sort(int [] arr) {
//外层循环,遍历次数
for (int i = 0; i < arr.length; i++) {
//内层循环,升序(如果前一个值比后一个值大,则交换)
for (int j = 0; j < arr.length - 1 - i; j++) {
//内层循环一次,小值放前面,大值往后移动
if (arr[j] > arr[j + 1]) {
int tmp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = tmp;
}
}
}
return arr;
}
// 选择排序 升序,默认第一值是最小的,
// 依次和另外的值比较,小于就交换,直到遍历完成找到最小值,
// 遍历完成后,最后进行最小值交换
private int [] sort1(int [] arr) {
for (int i = 0; i < arr.length; i++) {
//默认第一值是最小的
int min = arr[i];
//记录当前下标
int index = i;
for (int j = i + 1; j < arr.length; j++) {
// 依次和另外的值比较,小于就交换,直到遍历完成找到最小值,
if (min > arr[j]) {
min = arr[j];
index = j;
}
}
// 遍历完成后,最后进行最小值交换
int tmp = arr[i];
arr[i] = min;
arr[index] = tmp;
}
return arr;
}