
Yujun's Blog
反转单链表
迭代实现:defreverse_linked_list_iteration(node):ifnotnode:returnnodepre_node=Nonewhilenode.next:next=node.nextnode.next=pre_nodepre_node=nodenode=nextnode
计数排序
计数排序, 只适用于都是整数的列表如列表 list_datas = [88, 6, 57, 72, 60, 42, 83, 73, 48, 85]1、找到最小值和最大值, 分别为 6,882、建立计数器,从 {6:0, 7:0, 8:0, .... 88:0}
堆排序
堆是具备以下特征的一种特殊二叉树: 1、是一棵完全二叉树 2、每个节点的值均小于(大于)或等于它的两个孩子节点(如果存在)的值。 3、树根节点(称为堆顶元素)的值最小(称为小顶堆)或最大(成为大顶堆)。 所以,堆顶元素(即第一个元素)必为最大值
二叉树的遍历
若以 D、L、R分别表示根结点、左子树、右子树,理论上来说,二叉树的遍历方式有六种,但如果限定先左后右,则只有三种遍历方式:DLR(先序遍历)、LDR(中序遍历)、LRD(后续遍历)。另外,还有一种特殊的遍历方式:层次遍历 A
希尔排序
希尔排序是对插入排序的优化。 插入排序在数据集”基本有序“时,效率最高,因此,希尔排序的优化思路便是先把数据集变成”基本有序“, 再进行插入排序。 那么如何变成”基本有序“? 1、对列表按一定的间隔(gap)进行分组,公式:gap = length
插入排序
插入排序: 类似于打扑克 把列表[0]当作一个有序数列,将第2个数插入到序列中正确的位置, 把列表[0, 1]当作一个有序数列,将第3个数插入到序列中正确的位置 ...时间复杂度:O(n^2)剖析:插入到某个位置(index),就说明[ind
选择排序
选择排序: 遍历列表,找出最小的那个数, 和初始位置调换顺序 时间复杂度:O(n^2)迭代实现:def select_sort_iteration(datas): length = len(datas) for i in range(0, length -