- 引言
排序的算法其实很简单,平时使用的频率也不是很高,但是非常经典,重要的是这种算法的思想。
排序算法的示意图
算法说明
冒泡排序:
冒泡排序的思想就是从最低端开始,比较相邻的两个数据,数据大的下沉,数据小的上升。这样比较一轮,最顶端的数据就是最小的。第二轮同样从最低端开始比较,比较到倒数第二个停止,以此类推直到所有的数据全部比较结束。则数据就会按照从小到大的顺序一次由上而下排列。
选择排序:
选择排序的思想就是使用第一个数据为基准,和所有的数据比较,只要数据比第一个数据小就要交换位置,确保第一个数据是最小的;第二轮比较以第二个数据为基准,依次比较,就会获取第二个数据在第二轮中最小;依次类推直到数据全部比较结束,数据就会按照由小及大的顺序排列。
- 代码说明
public class SortDemo {
public static void main(String[] args) {
int[] arr = {8,5,9,21,45,14,6,4};
//bubbleSort(arr);
SelectionSort(arr);
for (int a : arr) {
System.out.print(a+" ");
}
}
/*
着重注意:算法使用嵌套for循环的条件
*/
//选择排序
public static void SelectionSort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = i+1; j < arr.length; j++) {
if(arr[i] < arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
//冒泡排序
public static void bubbleSort(int[] arr) {
for (int i = arr.length-1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if(arr[j] < arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
}
/*
结果:45 21 14 9 8 6 5 4
*/