随笔分类 - 算法
摘要:快速排序,是一个基于递归的算法,其核心思想如下:对于列表,选取一个轴值(一般选取第一个元素或者最后一个元素),把列表中小于该轴值的排在左边,大于该轴值的排在右边,这样,轴值在列表中的位置就确定了。由此衍生出了轴值的左子列表,以及右子列表,递归的对于左子列表以及右子列表使用上述的排序算法,直到子列表中
阅读全文
摘要:关于插入排序,其算法的核心思想是:将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数。即:序列的第一个元素,肯定是有序的,把第二个元素和第一个元素相比,插入到合适的位置,这样前两个元素就有序了,接着,把第三个元素插入到前面包含两个元素的有序列表中,以此类推,直至插完第n个数据
阅读全文
摘要:选择排序核心算法: 固定位置,选择元素,即从序列中先找到最小的元素,放在第一个位置,然后在找到第二小的元素,放在第二个位置 以此类推,直到完成所有元素的排序 def selectSort(nums): for i in range(len(nums) - 1): # min_num = nums[i
阅读全文
摘要:链表:暗喻:链子,一环连着下一环,环环相连。一个对象包含一个指针指向下一个与它连接的对象node(0)-->node(1) >node(2)....node(n)->None 链表的基本元素有:• 节点:每个节点有两个部分,左边部分称为值域,用来存放用户数据;右边部分称为指针域,用来存放指向下一个元
阅读全文
摘要:冒泡排序算法: 核心算法:在数组nums中,从第一个数开始,nums[i]与nums[i+1]相比较,如果nums[i]>nums[i+1],则交换2个数的位置,否则不交换; 这样遍历一遍数组,最大的数字就排在最后面的;剩下n-1个数,继续循环排序,直到完成所有的排序;每次都想冒泡一样,故取名冒泡排
阅读全文
摘要:二分法查找是一种快速查找方法,时间复杂度低,逻辑简单易懂,总的来说就是不断除以2...... 例如:需要查找有序数组nums里面某个关键字key的位置,那么首先确认下nums的中位数mid,分为3种情况: 1)nums[mid] > key,说明key在nums中心的左边范围; 2)nums[mid
阅读全文
摘要:1、给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋 转图像。 示例 1: 给定 matrix = [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入矩阵
阅读全文
摘要:递归: 1、函数自己调用自己 2、要有结束递归的条件 def print_num(n): if n < 0: return print(n) print_num(n-1) print("******") print_num(3) 执行结果: 3 2 1 0 **** **** **** **** 解
阅读全文
摘要:插入排序: 5 4 3 21:1位置开始比较,和他前面所有的数字进行比较4 5 3 22:2位置开始比较,和他前面所有的数字进行比较4 3 5 23 4 5 23:3位置开始比较,和他前面所有的数字进行比较3 4 5 23 4 2 53 2 4 52 3 4 5排好序了。依次把1坐标以后的所有元素,
阅读全文
摘要:161、求1000以内的所有的素数以及闰年的数之和 第一步:求1000以内的素数,素数:只能被1和本身整除的数叫素数 import math def is_prime(num): if num ==1: return Fase if num == 2: return True for i in ra
阅读全文

浙公网安备 33010602011771号