![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
Ray_20160915
在此记录本人在工作学习中遇到的问题及其解决方法。
谁都是从新人过来的,任何时候都应保持谦逊,努力学习。
展开
-
学点算法:简单选择排序
简单选择排序的思路主要是:先拿出数组的第一个元素,与该数组之后的元素中最小(大)的那个元素交换位置,接下来拿出数组第二个元素,继续与这个数组之后的最小(大)的那个元素交换位置,以此类推。在网上看到说这个算法"不稳定",原来是因为在使用选择排序的过程中,两个相同大小的元素的相对位置被打破了,就称为算法"不稳定"。举个例子:[5,6,8,5,3,7] 用上面的算法,我们会看到第一个 5 和 3...原创 2019-09-10 19:08:59 · 264 阅读 · 0 评论 -
学点算法:冒泡排序及其改进
冒泡排序的主要思路是遍历整个数组,将数组中相邻的两个元素进行比较,如果比较中第二个元素比第一个元素小,则将两个元素的位置交换(假设是要排出正序),等第一次遍历完成我们会发现最大的那个元素已经‘冒泡’到数组的最后一个位置,接下来进行第二次遍历,比较范围是 第一个元素到倒数第二个元素(因为倒数第一个元素已经是最大,没有必要加入比较),继续做相邻两个元素的比较,以此类推。关于算法的稳定性,冒泡排序是...原创 2019-09-11 11:26:58 · 197 阅读 · 0 评论 -
学点算法:归并排序(分治法)
归并排序的主要思路是先将数组不断拆分,直到子数组不能拆分为止,然后对子数组进行排序、与另一个子数组合并形成新的数组,再次排序,直到合并为一个数组;看下面这张图就可以很清晰明了python实现:def merge_sort(items, comp=lambda x, y: x <= y): """归并排序(分治法)""" if len(items) <...原创 2019-09-13 09:15:22 · 221 阅读 · 0 评论