合并两个有序链表

合并两个有序链表        将两个升序链表合并为一个新的  升序  链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。         示例:                输入:1->2->4,  1->3->4                输出:1->

#排序   #leetcode   #算法   #简单  

计数排序

计数排序,  只适用于都是整数的列表如列表  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、树根节点(称为堆顶元素)的值最小(称为小顶堆)或最大(成为大顶堆)。        所以,堆顶元素(即第一个元素)必为最大值

#排序   #基础  

归并排序

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

#排序   #算法   #基础  

希尔排序

希尔排序是对插入排序的优化。        插入排序在数据集”基本有序“时,效率最高,因此,希尔排序的优化思路便是先把数据集变成”基本有序“,  再进行插入排序。        那么如何变成”基本有序“?        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、坑的理解对于需要进行排序的列表,我们假设在地上有n个连续的坑,每个坑中都放了一个数字,我们需要把数字调整成从小到大的顺序2、挖坑(找基准数)的理解从这些坑中,选出一个基准数,就相当于从坑中挖出数字,

#排序   #算法