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