这段时间看了许多经典排序算法,所以就索性写一下个人对于这些排序的理解。方便以后回顾算法知识。当然,大部分都是以代码作为切入点,至于排序算法的理论知识可能不会过多讲解,请自行查阅,敬请谅解!
冒泡排序
思想:
整个过程像气泡一样往上升,单向冒泡排序的基本思想是(假设由小到大排序):对于给定n个记录,从第一个记录开始依次对相邻的两个记录进行比较,当前面的记录大于后面的记录时,交换位置,进行一轮比较和换位后,n个记录的最大记录将位于第n位,然后对前(n-1)个记录进行第二轮比较;重复该过程,直到记录剩下一个为止。
Java代码:
public class Test {
public static void main(String[] args) {
int[] arr = {32,45,34,5,63,54,21};
bubbleSort(arr);
System.out.println(Arrays.toString(arr));
//输出结果:[5, 21, 32, 34, 45, 54, 63]
}
//冒泡排序
public static void bubbleSort(int[] arr) {
int temp = 0; //记录临时值
for(int i = 0; i < arr.length - 1; i++) {
for(int j = 0; j < arr.length - 1 - i; j++) {
//和后面进行比较,值小的往前移动
if(arr[j] &