
数据及计算机基础
su_bao
stay hungry, stay foolish~
展开
-
python实现选择排序
1、选择排序原理 搜索整个列表,找到最小项的位置,如果该位置不是列表的第一个位置,那么就交换这两个项的位置。2、python代码实现 def selectSort(arr): i = 0 while i < len(arr)-1: nowIndex = i j = i+1 while j < len(arr): ...原创 2018-07-09 23:14:02 · 729 阅读 · 2 评论 -
一文解决中文在Eclipse中显示乱码的问题
很多童鞋反应在吧项目导入到eclipse(myeclipse)时中文会有乱码,修改了编码格式后还是乱码,这里给大家介绍一下关于中文乱码时修改编码的注意事项: 当在eclipse中打开一个文件后发现有中文乱码后,千万不能修改这个文件内容,一旦改过这个文件的内容,那怎么修改编码也没用了,只能重新导入。 当打开文件发现乱码后第一步是关闭这个文件,然后在这个文件上右键,选择属性,然后选择编...转载 2018-09-08 13:46:40 · 10108 阅读 · 2 评论 -
python实现二叉树深度遍历
1、什么是深度优先遍历 其实深度优先遍历你可以把它看成是前序遍历,比如对于如下二叉树: 其深度遍历的结果是:1,2,4,8,9,5,3,6,72、解题思路 一、采用递归的方式进行遍历。 二、利用栈,先将根入栈,再将根出栈,并将根的右子树,左子树存入栈,按照栈的先进后出规则来实现深度优先遍历。3、编程实现clas...原创 2018-09-04 16:30:05 · 5718 阅读 · 2 评论 -
python实现二叉树层次遍历(宽度优先遍历或叫广度优先遍历)
1、何为层次遍历 说白了,就是一层一层、由上至下、由左至右的搜索遍历二叉树中的元素。 上面这个二叉树,那么层次遍历的输出应该是:1、2、3、4、5、6、7、8、92、解题思路 利用队列,依次将根,左子树,右子树存入队列,按照队列的先进先出规则来实现层次遍历。3、编程实现class Node(): # 节点类 ...原创 2018-09-04 15:47:58 · 9445 阅读 · 3 评论 -
Python实现合并排序(归并排序)(一文看懂)
1、归并排序原理 归并排序采用分而治之的原理: 一、将一个序列从中间位置分成两个序列; 二、在将这两个子序列按照第一步继续二分下去; 三、直到所有子序列的长度都为1,也就是不可以再二分截止。这时候再两两合并成一个有序序列即可。2、一图以明之 3、Python代码def merge(a, b): c = [] h = j = 0 whil...原创 2018-07-15 16:12:18 · 29973 阅读 · 17 评论 -
Python实现二叉搜索
1、什么是二叉搜索 二叉搜索是在一个有序的列表中,寻找目标元素。因此我们需要对半查找即可。当目标元素比中间元素小,则在中间元素的左边查找;反之,则在目标元素的右边查找。直到左边界比右边界还要大停止查找。2、Python代码def binarySearch(target,arr): right = len(arr) - 1 left = 0 while left <...原创 2018-07-15 11:23:20 · 298 阅读 · 0 评论 -
Python中的min及如何返回最小值索引
1、Python的min函数返回列表中的最小的项。2、如何返回列表中最小的项的索引?def indexofMin(arr): minindex = 0 currentindex = 1 while currentindex < len(arr): if arr[currentindex] < arr[minindex]: ...原创 2018-07-15 10:55:42 · 22128 阅读 · 1 评论 -
Python中和时间操作有关的代码
本文转载自:https://blog.youkuaiyun.com/a8039974/article/details/790255041.获取当前时间的两种方法:复制代码 代码如下:import datetime,timenow = time.strftime("%Y-%m-%d %H:%M:%S")print nownow...转载 2018-07-15 10:30:26 · 510 阅读 · 0 评论 -
python实现快速排序
1、快速排序思想 至于快排的原理,在我之前的博客里有写,这里再简单描述一下。快排首先会选择一个种子元素key,一般取序列的第一个元素为key,然后从后往前把比key小的找出来,放在key前面,再从前往后找出比key大的,放在key的后面,直到所有子序列的长度不大于1,这样最终排序就完成了。2、快排小常识 是最实用的排序算法,没有之一,各大语言标准库的排序函数也基本都是基于快排实现...原创 2018-07-07 10:48:48 · 440 阅读 · 0 评论 -
二叉树的三种遍历问题
1、先序遍历:【根左右】 所谓【根左右】是指先遍历根节点,然后左孩子节点,最后右孩子节点。 所以,上图的遍历顺序是:ABCDEF2、中序遍历:【左根右】 先左孩子节点,然后根节点,最后遍历右孩子。 上图的遍历顺序是:CBDAEF3、后序遍历:【左右根】 先左孩子节点,然后右孩子节点,最后根节点。 上图的遍历顺序是:CDBFEA...原创 2018-07-06 11:03:08 · 1833 阅读 · 0 评论 -
python实现插入排序
1、插入排序原理 百度上的话,学术性太强,不容易看懂,我用自己的话复述一下插入排序原理。 插入排序的核心在于,它把一个无序数列看成两个数列,假如第一个元素构成了第一个数列,那么余下的元素构成了第二个数列,很显然,第一个数列是有序的(因为只有一个元素嘛,肯定有序哦),那么我们把第二个数列的第一个元素拿出来插入到第一个数列,使它依然构成一个有序数列,直到第二个数列中的所有元素全部插入到...原创 2018-07-11 17:18:35 · 7145 阅读 · 0 评论 -
一文详解快速排序到底是怎么排的
1、快速排序精髓 一、先从数列中取出一个数作为基准数 二、分区,将比这个数大的数全放到它的右边,小于或等于它的数全部放到它的右边 三、对左右区间重复步骤(二),直到各区间只有一个数为止2、详解排序过程 假设一下数列 12 30 17 9 8 20 3 我们选取第一个数12为基准数,第一回合,从后往前找出一个比基准数12小的数,是3,所以我们将3和基准...原创 2018-07-04 18:00:35 · 11758 阅读 · 1 评论 -
python实现单链表反转(经典笔试题)
0、说在前面的话 链表结构,说难不难,说易不易,一定要亲自编程实现一下。其次就是一定要耐心,慢慢去体会其中的道道,博主一开始也是有点懵逼的,后来仔细琢磨了一下终于搞明白了,相信聪明的你也一定可以,有问题可以留言交流。1、单链表结构2、反转的想法 建立三个变量,L、M、R互相赋值迭代,并建立指向关系,从而实现单链表的反转。3、python代码实现cla...原创 2018-07-16 22:40:18 · 14621 阅读 · 0 评论 -
Python中有关链表的操作(经典面试内容)
1、创建一个链接node1 = Node("c",node3)或者node1 = Node("c",None)node1.next = node32、用循环创建一个链表结构,并且访问其中的每一个节点class Node(object): def __init__(self, data, next=None): self.data = data sel...原创 2018-07-16 16:38:10 · 12854 阅读 · 3 评论 -
python实现冒泡排序
1、冒泡排序原理 一、比较相邻的两个数,如果第一个数大于(或者小于)第二个数,就交换他们的位置。 二、把所有数都两两比较后,那么在数列的最左边即可得到最大数(或者最小数)。 三、对除去最大数(或者最小数)的余下数列再进行一、二步的操作,直到所有的数字都排好位置。2、一图以明之 3、python代码实现def bubbleSort(arr): for j in ...原创 2018-07-10 10:04:35 · 1012 阅读 · 0 评论 -
Python实现二维数组
1、二维数组 二维数组使用简便,可以有很多简洁的操作,实现多元的要求。2、如何实现 一、直接定义matrix = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]matrix[2][2] = 9print(matrix) 输出:二、间接定义matrix = [[0 for i in range(3)] for i in range(3)...原创 2018-07-16 14:14:13 · 35422 阅读 · 0 评论 -
详解两个队列实现一个栈(python实现——经典面试题)
1、任务详解 使用两个队列数据结构实现一个栈,要求实现栈的出栈和进栈操作。2、解题思路 push()操作: 为了保证先进栈的元素一直在栈底,需要将两个队列交替使用,才能满足需求。因此,想法是,我们只在空的那个队列上添加元素,然后把非空的那个队列中的元素全部追加到当前这个队列。这样一来,我们又得到一个空的队列,供下一次添加元素。 p...原创 2018-09-03 16:18:29 · 5593 阅读 · 1 评论