编程基础
我的灯还亮着
这个作者很懒,什么都没留下…
展开
-
为了offer系列——快速排序(C++),附测试用例
offer必备三大算法之一——快速排序平均时间复杂度:O(nlogn),和归并排序一样。尽管最坏时间复杂度很差,但因为它的平均性能非常好,故常用于实际当中。稳定性:是一个不稳定的排序算法,不稳定发生在主元pivot和a[j]交换的时刻。 基本步骤(算法导论分治思想的三步)如下:1.分解:将数组A[p,..,r]以一个主元pivot(常取最后一个元素A[r])为界,划分为两个子数组(可能...原创 2017-06-23 10:25:22 · 2169 阅读 · 2 评论 -
为了offer系列——二分查找(C++),附测试用例
(最近在改文章,今天看了一篇博客讲递归,总结的不错,虽然老了点。就更新个常考算法,偷个懒,原文在此)前提:表中元素是有序排列的(此处按照升序处理)思路:假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直...原创 2017-07-06 17:31:45 · 1728 阅读 · 0 评论 -
为了offer系列——归并排序(C++)
offer必备三大算法之一——归并排序平均时间复杂度:O(nlogn)稳定性:稳定分两步:递归(递归的调用排序函数,将原始数组递归的一分为二,分裂为n个单独的元素,单独即有序)——归并(合并两个已排序的序列)归并操作:将两个已经排序的序列合并成一个序列的操作。为了避免每一个基本步骤必须检查是否有数组为空,在每个数组末尾放置一个哨兵元素。这里我用 INF代表其值。归并的基本步骤如...原创 2017-06-20 09:13:59 · 416 阅读 · 0 评论 -
C风格字符串和string类的操作——从实现atoi函数开始
atoi函数是实现将字符串转换为整形数,遇到第一个非数字字符即停止这里的关键就是溢出的判断,且不用考虑小数点。至于两种类型的字符串,一个是通过指针来遍历元素,一个是通过索引i来遍历元素,两个功能一样,大家可以做对比,以后就不会被指针搞得晕头转向了。搞定这个函数,其他的字符串操作有了思路也应该能实现了。int atoi_my(const char *str){ uns...原创 2017-10-26 11:15:34 · 587 阅读 · 0 评论