数据结构与算法
本专栏记录了非科班大三学生与算法的爱恨情仇。从开始的懵懂羞涩,到中期的甜蜜虐恋,相爱相杀,再到后期的相守相伴。
青糖~
这个作者很懒,什么都没留下…
展开
-
leetcode数组——二分查找
数组理论知识数组是存放在连续内存空间上的相同类型数据的集合数组可以方便的通过下标索引的方式获取到下标下对应的数据 可以通过访问数组的下标0,访问到对应的元素S数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址数组的元素是不能删的,只能覆盖二分查找基本思想给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -原创 2022-01-08 22:45:17 · 543 阅读 · 0 评论 -
c语言指针
指针变量是存着其他变量地址的一种变量指针变量的类型应与它所存储的变量地址的变量类型相同指针就是地址int a=2;//声明变量a int *pa=&a;//指针变量是存着其他变量地址的变量#include<stdio.h>//指针就是地址//指针变量是存着其他变量地址的变量int main(){ int *pa;//声明指针变量 int a=2;//声明变量a pa=&a;//指针就是地址 printf("%i\n",a); printf(".原创 2021-12-06 18:14:28 · 491 阅读 · 0 评论 -
堆排序的基础
堆排序复杂度O(nlogn)sift(li,low,high)函数,logn 相当于二分法,因为给tmp找一个位置,只能走二叉树的一个叉n为heap_sort(li)中的两个for 循环二叉树度为2满二叉树每一层的节点数都达到最大值完全二叉树叶节点只能出现在最下层和次下层,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树最下面一层可以不满,须从左往右排列二叉树的存储方式链式存储方式顺序存储方式父节点与左孩子节点的编号下标 i->原创 2021-11-09 23:24:49 · 236 阅读 · 0 评论 -
冒泡—选择—插入排序
排序冒泡排序列表每相邻的2个数,从开头,若比后面的数大,则往后走每一趟,无序区少一个数,有序区多一个数def bubble_sort(li): for i in range(len(li)-1): #n-1趟 for j in range(len(li)-1-i): #无序区 if li[j]>li[j+1]: li[j],li[j+1]=li[j+1],li[j] return li改进版def原创 2021-11-06 13:21:24 · 69 阅读 · 0 评论 -
关于查找的算法
查找顺序查找def linear_search(li,val): for index,v in enumerate(li): if v==val: return index return Nonedef linear_search(li,val): for i in range(len(li)): if li[i]==val: return i return None二分查找用于以原创 2021-11-06 12:21:55 · 57 阅读 · 0 评论 -
关于递归算法
递归递归的两个特点1.调用自身2.结束条件函数的执行顺序是自上而下的,如图小框代表,print;大框代表调用自身函数def func1(x): if x>0: #结束条件 print(x) func1(x-1)#调用自身 #打印出3,2,1 def func2(x): if x>0: #结束条件 func2(x-1) #调用自身 print(x) #打印出1,2,3递归的实原创 2021-11-06 12:06:02 · 58 阅读 · 0 评论 -
趣学算法1.1——桶排序
桶排序问题:设计一个程序,让计算机随机读入五个数(0-10),然后升序排列思路:一维数组 int book[11],拥有11个变量,编号为a[0]-a[10].将每个变量初始化为0,表示0-10,这11个数字还未曾出现过一次。当读入数据后,例如,读取一次5,a[5]由0加到1,依次类推,a[0]~a[10]中的数值分别对应 :0 到 10 每个数字出现的次数。代码:int main(){ int book[11],i,j,t; for(i=0;i<=10;i++) book[i]=0原创 2021-08-31 14:23:34 · 77 阅读 · 0 评论 -
趣学算法——1.2冒泡排序
冒泡排序前一节的简易桶排序,有很大的局限性。[1] 只能排列数字:若数字有了含义,对应人名则无法按人名排列;[2 ] 非常浪费空间:例如需要排序数的范围是很大。但要排序的数却很少;[3 ] 小数无法排列:如果现在需要排序的不再是整数而是一些小数,比如将 5.56789、2.12、1.1、3.123、4.1234;思路:每次比较相邻两个数的大小,如果它们的顺序错误就将它们交换过来。每趟都将一个数字归位,总共要走n-1趟。#include <stdio.h>int ma原创 2021-08-31 17:54:37 · 54 阅读 · 0 评论