归并排序

归并排序,先拆后合动画演示:                                  要对其“先拆后合”,理应通过下标值进行,假设有个长度为10的数组,则下标为  0123456789,拆的过程:        0123456789        01234  56789        0

#排序   #算法   #基础  

文本模式显示二叉树

                            A                _____/  \_____              /                          \            B                              C     

#算法   #二叉树  

二叉树的遍历

        若以  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 -

#排序   #算法  

冒泡排序

冒泡排序:        比较第1个数和第2数,如果第1个数大于第2个数,则调换他们的顺,即把更大的数放在后面,        对  第2个数  和第3数,重复此操作...,  最后,整个列表中最大的数就被换到了最后一个位置,        把数值从低位慢慢到高位的过程,比喻成冒泡。        

#排序   #算法  

时间复杂度[转]

关于代码的基本操作执行次数,我们用四个生活中的场景,来做一下比喻:场景1:给小灰一条长10寸的面包,小灰每3天吃掉1寸,那么吃掉整个面包需要几天?        答案自然是  3  X  10  =  30天。        如果面包的长度是  N  寸呢?        此时吃掉整个面包,需要  

#算法  

两数之和(twoSum)

给定一个整数数组  nums 和一个目标值  target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:        给定  nums  =  [2,  7,  11,  15],  target

#leetcode   #算法   #简单   #数学思维  

快速排序

快速排序:通过基准数,把小于它的数放在它的左边,大于它的放在它的右边。也可以称为“挖坑转移”排序:1、坑的理解对于需要进行排序的列表,我们假设在地上有n个连续的坑,每个坑中都放了一个数字,我们需要把数字调整成从小到大的顺序2、挖坑(找基准数)的理解从这些坑中,选出一个基准数,就相当于从坑中挖出数字,

#排序   #算法