八大排序算法--JAVA语言版

  由于博主是一个学完知识就不爱复习的人,所以每次安排复习都很没劲儿,属于那种学了会,但是又记不住的人!于是乎把复习的形式换为写博客。如此,甚好。

一、冒泡排序--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,那么就交换这两个位置上的值,下一个位置以此类推。

     举个例子,请看下图讲解:

猜你喜欢

转载自www.cnblogs.com/crush-u-1214/p/10527574.html