【算法第一课】-- 常见排序算法1

排序算法是计算机科学中非常重要的一类算法。通过排序算法,我们可以对数据进行排序,从而更容易地检索、分析和处理数据。本文将介绍以下几种常见的排序算法:
- 冒泡排序
- 选择排序
- 插入排序
注意:
如无特殊说明,默认都是按照正序排序,即从左到右从小到大的顺序
冒泡排序
冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
排序过程很像水中的气泡,较大的气泡会优先上升,因此得名
算法步骤
- 比较相邻的两个元素。如果第一个比第二个大,就交换它们两个;
- 每一对相邻元素做同样的操作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
- 针对所有的元素重复以上的步骤,除了最后一个;
- 重复步骤 1-3,直到排序完成。

代码实现
/** |
选择排序
选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据中选出最小(或最大)的一个元素,存放在数列的起始位置,直到全部待排序的数据元素排完。
注意:
- 将整体数据分成两部分:有序部分和无序部分
- 整体开始为无序状态,然后依次选出一个最值填充有序部分
算法步骤
- 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置;
- 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾;
- 重复步骤 2,直到所有元素均排序完毕。

代码实现
/** |
插入排序
插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
注意:
- 同样将整体数据分成两部分:有序部分和无序部分
- 单独一个数据为有序的
- 从无序部分依次插入到有序部分的正确位置
- 过程很像打牌
算法步骤
- 从第一个元素开始,该元素可以认为已经被排序;
- 取出下一个元素,在已经排序的元素序列中从后向前扫描;
- 如果该元素(已排序)大于新元素,将该元素移到下一位置;
- 重复步骤 3,直到找到已排序的元素小于或者等于新元素的位置;
- 将新元素插入到该位置后;
- 重复步骤 2-5。

代码实现
/** |
交换方法
public static void swap(int[] arr, int i, int j) { |
小结
以上介绍了常见的排序算法:冒泡排序、选择排序、插入排序。我们发现同一个问题可以有不同的算法解决。那么不同的算法如何评价,孰优孰劣,又该如何选择?
评论
匿名评论
✅ 你无需删除空行,直接评论以获取最佳展示效果