由于博主是一个学完知识就不爱复习的人,所以每次安排复习都很没劲儿,属于那种学了会,但是又记不住的人!于是乎把复习的形式换为写博客。如此,甚好。
一、冒泡排序--Bubble Sort
(1)算法基本思想
从第一个元素开始,依次比较两个相邻的元素,如果第 i 个元素比第 i+1 个元素大,就交换位置,直到遍历比较完最后一个元素就可以确定值最大的那个元素在数组arr[arr.length-1] 的位置上,至此第一轮比较结束。开始第二轮比较,因为第一轮比较确定了最大的元素,所以最后一个元素就不需要参与第二轮的比较,类似的,第三轮、第四轮。。。一共要比较 arr.length-1 轮。
举个例子,请看下图讲解:
观察冒泡排序的过程,可以得出以下规律:
共需要比较的轮数:arr.length - 1 轮
每轮比较的次数:arr.length - 1 - (第几轮-1) 次,即 arr.length - 1 - i 次
(2)代码
1 import java.util.Arrays; 2 3 public class BubbleSort { 4 5 public static void main(String[] args) { 6 int[] arr = new int[] { 5, 7, 2, 9, 4 }; 7 System.out.println(Arrays.toString(arr)); 8 bubbleSort(arr); 9 System.out.println(Arrays.toString(arr)); 10 } 11 12 public static void bubbleSort(int[] arr) { 13 // 控制比较多少轮 14 for (int i = 0; i < arr.length - 1; i++) { 15 // 控制比较次数 16 for (int j = 0; j < arr.length - 1 - i; j++) { 17 if (arr[j] > arr[j + 1]) { 18 int temp = arr[j]; 19 arr[j] = arr[j + 1]; 20 arr[j + 1] = temp; 21 } 22 } 23 } 24 } 25 }
二、选择排序--Selection Sort
(1)算法基本思想
遍历从 0 - (length - 1) 位置的每一个元素,假设当前位置 i 的元素值为最小值,用 minIndex 记录当前位置;当前位置的值与当前位置之后的所有元素进行比较,得出值最小的元素下标,并把其下标赋给minIndex,如果 minIndex != i,那么就交换这两个位置上的值,下一个位置以此类推。
举个例子,请看下图讲解: