- 博客(8)
- 收藏
- 关注
原创 C语言入门——BFS图的广度优先遍历
本博客为考试服务,研究邻接表表示法下BFS的实现。图的定义以及邻接矩阵表示法,请参见涉及到的数据结构知识点:单链表、队列、图。
2024-01-25 19:08:50
573
原创 C语言入门——一维数组和二维数组
以下的解释仅代表个人理解:我们在统计一组数据(如一个年级学生的期末成绩)时,我们往往需要将这组数据视作一个整体集中处理(比如遍历,排序,筛选),而不是将每个数据视作孤立的元素。我们可以使用一块连续的内存空间,将同一性质(这里就是数据类型)的元素储存在一起。这样就构成了一个元素序列。我们就将这个序列叫做数组。数组的声明与变量类似,需要先声明数组的数据类型,随后声明数组的名称和数据个数。int a[12];注意,数组的下标从0开始,a[12]包含a[0] ......a[11],没有a[12]。
2024-01-20 18:43:03
2484
原创 C语言入门——循环嵌套
其实循环嵌套没有什么新鲜的。你只需要理解循环体是什么就好。循环体就是程序在一定条件下反复执行的一段代码。而循环嵌套就是把某个循环塞到另一个循环的循环体里面去。a
2024-01-20 17:11:44
1703
原创 C语言入门——循环
遇到do......while语句时,先执行一次循环体,然后进行判断,如果为true则继续执行,false则跳出。两个分号之间是循环执行的判断条件, 第二个分号后面是一轮循环结束后对变量的更改。如果有多层循环,只能跳出break所在的最内层循环。显然,这个程序员永远无法脱单,因为在程序遇到continue时,后面的所有代码都不再执行而开启下一轮循环。for循环有一个小细节:在for循环内(包括括号内和循环体中)定义的变量,循环结束后会被销毁。在上面的代码中,当i是6的倍数时,直接跳出循环,循环不再执行。
2024-01-20 16:02:35
2323
原创 常用的排序算法(三)
然后继续从左到右,遍历整个链表数组,每个遍历到的数字都要按照十位上的数字加入bucket2中......这样,排序排到百位(最大数字的位数),数组就有序了。建好堆后,拿掉顶上的元素并放在最后面(选择排序的思路),这时堆的规模减少1,再调整成最大堆.再次拿掉顶上的元素,调整......这样直到最后堆的大小变为1,排序结束。在代码中,我们建堆和排序的过程中都要用到两层嵌套循环,外层的循环花费O(n)次,内层循环每次都要把数据翻番,所以时间复杂度为O(logn),所以堆排的时间复杂度为O(nlogn)。
2024-01-20 10:40:34
350
原创 常用的排序算法(二)
然后再后移i,找到11,前移j,找到0,互换......重复以上步骤,直到i,j相遇,然后交换arr[i]和主元,得到主元在中,小的在左边,大的在右边的序列,然后对主元两侧的部分递归(类似归并)。于是递归的深度为O(logn),同一深度的递归所处理的元素个数之和为O(n)(因为数组的大小是固定的,你只是把它拆成一块一块的,或者两半,或者四部分,等等,但是加起来还是那么多数。快速排序也借助了分而治之的思想,但快速排序是借助数组中的一个“主元”将数组中的元素拆分成为两部分:一部分比它小,另一部分比它大。
2024-01-19 21:25:50
1098
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人