
一、冒泡排序
冒泡排序算法思路
- 比较相邻的两个数组元素,如果第一个比第二个大,则交换两个的值
- 对每一对相邻元素做同样的工作,从开始第一对比较到最后一对,最后的元素应该是最大值
- 针对所有元素重复以上步骤,除了最后一个
- 针对越来越少的元素重复以上步骤,直至没有任何一对数字比较
代码实现:
1 |
|
二、选择排序
选择排序算法思路:
- 假设第一个元素为最小值,记下其下标
- 寻找右侧剩下的元素,若有更小的,记录其下标
- 如果有新的最小值,交换元素
- 往右重复以上步骤,直至元素是最后一个
代码实现:
1 |
|
三、插入排序
插入排序算法思路:
- 假设第一个元素已经排好
- 取出第二个元素,作为待插入元素
- 与已经排好序的最右侧元素比较
- 如果后面的元素大于前面的元素,说明前面的元素不在正确的位置上,则往后退一个位置,然后让新的元素填充进去,继续向前比
- 重复以上步骤,直到元素插入正确位置
- 重复以上步骤,直至所有元素插入正确位置
代码实现:
1 |
|
四、快速排序
快速排序算法思路:
- 假设将第一个元素作为比较元素
- 定义两个数组($left,$right),然后从第二个元素开始跟比较元素相比,小的放大$left数组里,大的放到$right数组里
- 这是中间的元素位置肯定是对的
- 用递归实现$left和$right元素的排序
代码实现:
1 |
|
五、归并排序
归并排序算法思路:
- 分而治之的思想
- 将要排序的数组从中间元素分开成两个数组,然后在定义一个新数组用来放归并的元素
- 把两个数组挨个比较,较小的先放进新定义的归并数组
- 直至两个数组都比较完,这时有一个数组只剩一个最大的元素,然后将归并完的数组与这个元素合并
- 注意左右两个数组递归排序内部元素
代码实现:
1 |
|
本文作者: nowfitness
本文链接: https://www.nowfitness.top/archives/83965cd0.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://www.nowfitness.top/archives/83965cd0.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
