自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 归并排序的递归写法

首先,我们要理解归并排序的基本逻辑。归并排序有点类似快排,就是将数组一直二分,但与快排不同的是,快排每次会分出一个中心轴的位置,然后通过中心轴分出来的两组数组继续快排,当分的只剩下一个元素或区间不存在时停止快排。而归并排序不会把中心轴给拿出来,因为他在逐层递归的过程中并没有排序,而是直到只剩下一个元素或区间不存在时才开始逐层排序,往回走。

2024-07-06 19:48:19 376

原创 递归实现汉诺塔问题

再写一次汉诺塔巩固下

2024-07-03 11:33:17 108

原创 非递归实现快速排序

为加深对此题的印象,同时也为各位道友提供援助以备不时只需,写下此篇博客。

2024-07-03 11:03:20 292

原创 快速排序递归方式避免栈溢出

就这颗满二叉树来看,如果递归的次数越深,函数调用的次数越多。其中最后一层调用的函数次数最多,调用了极大的函数栈帧。所以,我们可以在临近最后几层时换一种排序方式,是程序变得更加轻便。希尔排序的理论基础是先大致排序过几次的插入排序,当数据太少时就无法体现优势,所以我们采用直接插入排序。在实际应用中,如果递归的深度太深,调用函数的次数增加,就容易导致栈溢出。在(right-left+1)<10的时候可以换成插入排序,实现小区间优化。//三数取中函数,能优化快速排序,可以不要。那为什么要这么做,又怎么做呢。

2024-07-03 10:42:44 179

原创 栈的基本实现

为了实现不用递归的快速排序,我再老老实实写一回栈

2024-07-03 09:32:50 371

原创 快速排序及其优化方式

记录美好生活

2024-06-29 17:00:40 217

原创 C语言两个队列实现栈

以后面试之类的可能会考,但绝对不适用c语言,因为成本太高(在做提前还要先写一个队列),而这道题主要考察的是对队列中函数的调用来实现栈的基本功能,比如尾插和尾删,我认为这道题的难点就在尾删,需要合理运用两个队列。主要讲下尾插,尾删。QueueEmpty(&obj->q1))//用假设法让题目变得更加简单。//为了避免使用二级指针,我们将队列放进结构体中。// 获取队列头部元素。// 获取队列队尾元素。

2024-06-26 17:36:10 687

原创 队列的基本实现

不手写队列了,以后用两个队列实现栈之类的问题就直接用这个

2024-06-25 16:43:16 335

原创 有以下程序 main() { char s[]=“abcde“; s+=2; printf(“%d\n“,s[0]); } 执行后的结果是(计算机二级)

第一次见到这种题,也许会有一些人是这么认为的,s是数组名,这里是数组首元素地址,s+=2,指针向后移两位,指向字符c,打印%d,输出c的ASCIL码值。这样的思路是错的,指针如何移动与数组内元素息息相关,加一就是移向下一个元素,而在数组s[]中,只有“abcde”这一格字符串元素,所以加2后向后移动两个元素大小的空间,这会导致数组越界,从而使程序出现问题。A)输出字符a的ASCII码 B)输出字符c的ASCII码。C)输出字符c D)程序出错。

2024-03-06 20:08:56 502 3

空空如也

空空如也

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

TA关注的人

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