随笔分类 -  算法

内排序之希尔排序
摘要:内排序之希尔排序 希尔排序是直接插入排序的优化算法,维基百科上的一段话: 假设有一个很小的数据在一个已按升序排好序的数组的末端, 如果用复杂度为O(n2)的排序(冒泡排序或插入排序), 可能会进行n次的比较和交换才能将该数据移至正确位置。而希尔排序会用较大的步长移动数据,所以小数据只需进行少数比较和 阅读全文

posted @ 2018-06-08 17:43 贝壳大兄弟 阅读(430) 评论(0) 推荐(0)

内排序之快速排序
摘要:快速排序 快速排序一轮排序的方式是找一个元素作为基准,然后将比它小的放到一边,比它大的放到另一边,对数组中所有元素进行这么一轮操作之后,这个基准元素就已经安放到“正确”的位置了,然后递归这个基准元素的左边和右边,一直递归到某次分组只有一个元素,就完成了整个数组的排序。 python代码如下: # c 阅读全文

posted @ 2018-06-07 11:24 贝壳大兄弟 阅读(353) 评论(0) 推荐(0)

内排序之直接选择排序
摘要:内排序之直接选择排序 直接选择排序的套路比较容易理解, 就是从待排的元素里,挑最小或最大的出来,放到前面,然后迭代指针往后移一位... 直接上代码: def select_sorting(ary): n = len(ary) for i in range(n): min_index = i for 阅读全文

posted @ 2018-01-08 10:55 贝壳大兄弟 阅读(169) 评论(0) 推荐(0)

二分查找
摘要:二分查找要求数组必须有序,代码比较容易理解 如下: # coding: utf-8 # non-recurse # 迭代版 def binary_search(alist, aitem): n = len(alist) start = 0 end = n - 1 while start <= end 阅读全文

posted @ 2018-01-07 22:12 贝壳大兄弟 阅读(606) 评论(0) 推荐(0)

内排序之冒泡排序
摘要:内排序之冒泡排序 冒泡排序是一个很直观的算法,代码中,每轮冒泡,都将待排元素中,排最后的一个元素“安置”好。我们可以从后往前迭代,python中for循环,从后往前,迭代整个数组的方法是这样: for i in range(len(arr)-1, -1, -1): ... 对这个语法不熟悉的同学可以 阅读全文

posted @ 2018-01-07 19:07 贝壳大兄弟 阅读(195) 评论(0) 推荐(0)

内排序之直接插入排序
摘要:我们一般最开始接触的排序就是插入排序,它看上去非常简单,可是如果没有弄清楚他的细节,自己手写一个插入排序,也是会出各种错,甚至就是写不出来,直到看到答案,再恍然大悟,奥,然后下次还是写不出,不用说,本人就经历过几次这样的情景,所以,虽然简单,还是有必要踏踏实实弄清楚这个最基础的算法。 处理方法 初始 阅读全文

posted @ 2017-11-27 09:54 贝壳大兄弟 阅读(366) 评论(0) 推荐(0)

导航