随笔分类 - 算法
摘要:插入排序 插入排序思路: 列表被分为有序区和无序区两个部分。最初有序区只有一个元素。 每次从无序区选择一个元素,插入到有序区的位置,直到无序区变空。 时间复杂度: O(n2)
阅读全文
摘要:选择排序 排序思路: 一趟遍历记录最小的数,放到第一个位置; 再一趟遍历记录剩余列表中最小的数,继续放置; 假定一个最小值变量,拿这个值遍历相比较,比假定的最小值还小,就设置最小值变量为该值 时间复杂度为: O(n2)
阅读全文
摘要:冒泡排序 排序思路: 将列表每两个相邻的数对比,如果前边的比后边的大,那么交换这两个数直到将最大的数放至最右侧。 时间复杂度为: O(n2) 冒泡排序之优化 优化说明:如果冒泡排序中执行一趟而没有交换,则列表已经是有序状态,可以直接结束算法。
阅读全文
摘要:快速排序算法 快排思路: 取一个元素p(第一个元素),使元素p归位; 列表被p分成两部分,左边都比p小,右边都比p大; 递归完成排序。 时间复杂度为: O(nlogn)
阅读全文
摘要:递归: 调用自身(自己调用自己) 结束条件(递归最大深度) 时间复杂度 时间复杂度:用来评估算法运行时间的一个公式(单位)。 一般来说,时间复杂度高的算法比复杂度低的算法慢。 常见的时间复杂度(按效率排序) O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n2logn)<O(n
阅读全文