自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 数据结构与算法——排序(下)

类似二分法查找,因为每个数最终排序后再数组中的位置是不变的,所以每次找数对应的位置使“在这之前小于它,在这之后大于它”,也是相对规律。缩短的排序的范围,每个数找到所在范围里的位置后,再分割,直到所有数排完为止。希尔排序也是同理,按倍数分成多个插排,而倍数位1时就是整体的插入排序,这个过程中每个倍数的插排都是在相对有序的数组上进行的,所以会更快,节省时间。例如,当增量为1时,希尔排序退化成了直接插入排序,此时的时间复杂度为O(N²),而Hibbard增量的希尔排序的时间复杂度为O(N3/2)。

2024-05-15 20:15:41 314

原创 数据结构与基础——高精度练习题

有时候就害怕因为进位,使后面的数越堆越大,理解进位后会发现,每一次计算时都进位完,那么每次乘的数都

2024-05-13 19:46:06 251

原创 数据结构与算法——排序四大经典算法(基础)5.13

插排排列时如果规律的话非常快,不像冒泡必须全走一遍,所以希尔排序作为插入排序的进化版,优化了这一部分。不好语言形容,总结就是分块进行有序排列,让每次排列时更规律,更规律了那时间就会短的。内循环,从尾到头遍历,遇到比a[i]小的停止,大的替换,最终使[1,i]有序。第一个循环i就是尾巴,第二个循环,从头到i遍历一遍将最大的冒到尾巴(冒泡)通过遍历[1,i],将a[i]插入到有序的位置,那么有序区间就从i-1到i。时间复杂度:

2024-05-13 18:28:14 176

原创 数据结构与算法——高精度算法(加减乘除)5.12 新

所以输入用string,计算时分位计算(有点模拟的味道,也有些技巧性,锻炼对数字的感觉和编码能力)再进行减法,减不了就拼接到下一位继续减,保留减的次数(结果),下一位重新计。变成[79879846][8][4][6][5][4][6][8]是解决数太大计算时会爆掉类型的问题。如798798468465468。4.高精度除法(高精除高精)

2024-05-12 21:25:01 125 1

原创 数据结构与算法5.9 高精度算法

因为高精度算法是解决数太大计算时会爆掉类型的问题所以输入用string,计算时分位计算(有点模拟的味道,也有些技巧性,锻炼对数字的感觉和编码能力)

2024-05-10 20:35:03 205

原创 计算机科学收获

公开分享版本【计算机科学速成课】 笔记 (shimo.im)

2024-05-06 15:11:17 99

原创 关于指针和&的本质0426

const修饰指针 常量指针const int *p=&a;指针指向的值不可以改,指针可以改const修饰常量 指针常量int* const p=&a;指针不可以改,指针指向的值可以改。const既修饰指针又修饰常量就是常量指针int &a=b;等于int * const a= &b;int a=10;内部发现是引用的,则会自动转化为*a=10

2024-04-27 14:29:28 97

原创 C++内存0426

四区存在的意义:不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活的编程。C++程序在执行时,将内存大方向划分为4个区域。

2024-04-26 21:00:38 118 1

原创 栈的考点-卡特兰数0425

1.Wn个不同元素进栈,出栈元素不同排列的个数位(1/(n+1))*!

2024-04-25 19:05:21 100 1

原创 C++收获 4.25

1.内存,动态扩容的,如链表之类的,必须由malloc开辟空间来存储,因为如果在方法里面直接设一个变量再添加,虽然也开辟了空间,但是会随着对应函数结束而出栈,对应的空间就没了,所以要用malloc再堆中开辟空间;4.链表靠关系连接,如果要插入就把箭头指向改变就好,每个结点(值,下个结点地址)2.C++最关键的两点,指针和内存开辟(堆,栈)3.顺序表按顺序连续。

2024-04-25 19:02:18 80 2

原创 方法篇4.16

for(String value: map.keySet()){//根据后面的变量返回前面的变量。插入,原来的元素往后。6.addall();5.获取map中的元素值。4.Deque双向队列。add自动锁定last。

2024-04-16 14:55:36 95

原创 训练收获0319

是用空间换时间,(带备忘录的递归),记忆化搜索,(递归的剪枝)

2024-03-21 18:49:12 108 1

原创 训练收获03.11

因为一个一个往前对比,如果有一个数比前面的数大,那么比它小的数就永远不可能用的到。2.一个字符串的子串是由不同的字符构成的,我们一个一个字符求这个字符的所有可能的子串,并且并且通过“相同字符以左边为大头”的做法,排除了重复的可能性,那么所有次数相加之和就是每个子串含有不同字符相加之和。先将求和的方法写出,按照顺序,根据求和的大小将数字依次放入数组(由于是位数和和大小两个指标,所以想到了用二维数组)(巧妙的用数组储存每个数位和当前的数量,作为指标可以直接将数字饭放入对应的位置),最后再依次输出。

2024-03-21 18:48:58 204 1

原创 案例训练1.25:细节总结

今天都在写练习题,总结几个容易忽略的点。

2024-01-25 23:02:06 144

原创 案例训练1.24:大整数乘法模拟和加法字符串模拟

这两道题现在看上去思路简单,但是我们如果学过进制这道题的想法会偏向用余数来存进数组,这个方法相比于直接用字符计算更加考验思维(总是出现索引越界或者是循环少了一个,又找不到问题,只能放弃等下次再试),所以上面用字符的方法更加直接,包括最后有几行链式编程能让代码看上去更简洁。

2024-01-24 20:52:30 335 1

原创 案例训练1.23:进制运算、位数运算

今天对进制有了新的理解,拿最常见的十进制,我们求每一个位时都用n%10,n/10反复循环直到n==0,对于其他进制也一样,都拿对应的数进行这样的操作(数是一定的,进制不同呈现的样子也不同)。

2024-01-23 20:57:40 354

原创 案例训练1.22:迷宫问题、唯一分解定理、最大公约数

这道题第一步,把迷宫创建出来。创建一个char二维数组,通过BufferedReader的readLine()和to.CharArray()配合循环将题目里的迷宫放入数组。第二步,阅读题目可知,限制点移动的条件有:下个点是否走过,是不是0,在不在迷宫内。我们相应的创造方法来解决这些问题,1.创造boolean类型的二维数组help白表示对应的位置是否走过,boolean类型数组默认是false所以当走过时help元素变成true。

2024-01-23 13:56:38 951 1

原创 案例训练1.21

案例:n为2021041820210418,求三个整数相乘等于n有多少种方法(原题是长宽高,所以不考虑重复:如1.2.3和2.1.3)这道题可以暴力算法,但是运行要运行很久,所以这道题的目的是运用算法提高效率因为是三个因数比较懊恼,一般想法是分成两个因数然后再从其中一个因数里分,没有实践过这种想法因为想起来太懊恼且代码复杂。这里可以用一个大家其实都知道但是不太常用的方法,就是某数因数的因数也是这个数的因数。

2024-01-21 21:16:56 863

原创 案例训练及收获1.20:BufferedReader、切割、字符串转化int、排序

掌握了更快的一种键盘录入的方式,使系统跑的更快。

2024-01-20 21:15:03 397 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除