排序算法
1、基本介绍
排序算法比较基础,但是设计到很多计算机科学的想法,如下:
- 比较和非比较的策略
- 迭代和递归的实现
- 分而治之思想
- 最佳、最差、平均情况时间复杂度分析
- 随机算法
2、排序算法的分类
算法分类
算法总结
3、冒泡排序
(1)冒泡排序的介绍
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
(2)冒泡排序的原理:
- 如果元素大小关系不正确,交换这两个数(在本例中为a> b),
- 比较一对相邻元素(a,b),
- 重复步骤1和2,直到我们到达数组的末尾(最后一对是第(N-2)和(N-1)项,因为我们的数组从零开始)
- 到目前为止,最大的元素将在最后的位置。 然后我们将N减少1,并重复步骤1,直到N = 1。
(3)动图演示
(4)代码演示
public static void bubbleSort(int array[]) { int t = 0; for (int i = 0; i < array.length - 1; i++){ for (int j = 0; j < array.length - 1 - i; j++){ if (array[j] > array[j + 1]) { t = array[j]; array[j] = array[j + 1]; array[j + 1] = t; } } } } 复制代码
4、选择排序
(1)选择排序的介绍
选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
(2)选择排序的原理
- 在 [L ... N-1] 范围内找出最小项目 X 的位置,
- 用第 L 项交换X,
- 将下限 L 增加1并重复步骤1直到 L = N-2。
(3)动态图演示
(4)代码演示
public static void selectionSort(int[] array) { for (int i = 0; i < array.length; i++) { int index = i; for (int j = i; j < array.length; j++) { if (array[j] < array[index]) index = j; } int temp = array[index]; array[index] = array[i]; array[i] = temp; } }