
常见算法
HTDST
纸上得来终觉浅,绝知此事要躬行
展开
-
快速排序Pyhon实现、递归与迭代
算法介绍 选择一个基准元素,通常选择第一个元素或者最后一个元素 通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大。 此时基准元素在其排好序后的正确位置 然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。 图解: pivot为基准元素 实现: def quick_sort(lists, left, right): %其中left和right参数是指所选列表的首元素和尾元素索引 if left原创 2021-06-07 16:36:32 · 239 阅读 · 0 评论 -
栈实现队列、队列实现栈
栈实现队列 整体思路就是两个栈中的元素相互倒,来实现队列先进先出、后进后出的模式 s1是入栈的,s2是出栈的。 入队列,直接压到s1是就行了 出队列,先把s1中的元素全部出栈压入到s2中,弹出s2中的栈顶元素;再把s2的所有元素全部压回s1中 图解1: 图解2: 图解3: 队列实现栈 q1是专职进出栈的,q2只是个中转站 入栈:直接入队列q1即可 出栈:把q1的除最后一个元素外全部转移到队q2中,然后把刚才剩下q1中的那个元素出队列。之后把q2中的全部元素转移回q1中 图解1: 图解2:原创 2021-06-06 14:46:31 · 192 阅读 · 0 评论 -
冒泡排序与简单选择排序
冒泡排序 动图展示: def bubble_sort(lists): count = len(lists) for i in range(count): for j in range(i + 1, count): if lists[i] > lists[j]: lists[i], lists[j] = lists[j], lists[i] return lists test_lists = [5, 4原创 2021-05-29 17:38:13 · 111 阅读 · 0 评论 -
反转单链表例题与ptython几种数据类型的可变性
目录题目描述思路解析代码实现python中几种数据类型的可变性 题目描述 输入一个链表,反转链表后,输出新链表的表头。 示例 输入:{1,2,3} 返回值:{3,2,1} 思路解析 首先定义列表首元素的下一个元素next并保存在nex变量中 令单链表首元素指向空(pre的初始值为空) 将pre指针指向单链表首元素 将单链表首元素指针挪向next 按上面四个步骤循环,则head指针将会逐渐后移到单链表尾部,再次移动单链表头指针时,为空,此时退出循环,返回pre值,此时由于head指向的是空,所以pre原创 2021-05-12 17:20:53 · 150 阅读 · 1 评论 -
二分查找例题详解
二分查找使用条件 当我们要从一个序列中查找一个元素的时候,二分查找是一种非常快速的查找算法,二分查找又叫折半查找。它对要查找的序列有两个要求: 一是该序列必须是有序的(即该序列中的所有元素都是按照大小关系排好序的,升序和降序都可以,本文假设是升序排列的) 二是该序列必须是顺序存储的。 如果一个序列是无序的或者是链表,那么该序列就不能进行二分查找。 算法原理 如果待查序列为空,那么就返回-1,并退出算法;这表示查找不到目标元素。 如果待查序列不为空,则将它的中间元素与要查找的目标元素进行匹配,看它们是否原创 2021-05-10 20:54:46 · 1028 阅读 · 0 评论