c/c++面试总结---c语言基础算法总结2
c/c++面试总结---c语言基础算法总结2
算法是程序设计的灵魂,好的程序一定是根据合适的算法编程完成的。所有面试过程中重点在考察应聘者基础算法的掌握程度。
上一篇讲解了5中基础的算法,需要在面试之前熟练掌握,本篇讨论剩余的基础算法。
先看一个面试题目:设计一个函数,求一个给定字符串中所有数字的和。
例如:给定字符串 “abc12fas123dfaf34”,
计算结果为:12 + 123 + 34 = 169
其中包括了:求和方法、字符串遍历方法、数字字符转成数字的方法
多位数字组合成整数的方法
必须熟练掌握以上四种基础算法,才能解决该问题
参考方法:
while(str[i] != '\0')
{
while(str[i]是数字字符)
{
数字字符转换成数字
数字组合成整数
}
求和
while(str[i]是非数字)i++
}
6、数组或者字符串逆序的算法:
基本思想:获取数组的长度len,首尾元素依次交换,共计循环len/2次
模型:
for(i = 0;i < len/2;i++)
{
array[i]<===>array[len - 1 - i]
}
7、排序算法:
排序的算法常用多种:需要熟练掌握选择排序和冒泡排序
基于数组array,数组的长度为len
选择排序模型:
for(i = 0;i < len - 1;i++)
{
for(j = i + 1;j < len;j++)
{
if(array[i] > array[j])
{
array[i]和arry[j]交换
}
}
}
依次用第一个数和其它所有的数进行比较,如果大于则交换两个数,再用第二个数和
剩余的数比较,如果大于则交换,依次循环直到倒数第二个数为止
冒泡排序模型:
for(i = 0;i < len - 1;i++)
{
for(j = 0;j < len - i;j++)
{
if(array[j] < array[j + 1])
{
array[j]和array[j+1]进行交换
}
}
}
每比较一次,让最大的数沉底,依次循环,则由小到大排好序。
8、处理英文字符串的时不区分大小写的方法
利用ascii码的规则,大写字母和小写字母的ascii码仅有第5位不同,其它位保持
一致,所有判断的方法是:
两个字符串存于str1和str2中
if((str1[i] | 0x20) == (str2[i] | 0x20))
str1[i]和str2[i]两者都是大写或者小写字母,则表达式成立
str1[i]和str2[i]一个是大写,另一个小写或者反之,则表达式同样成立
用来处理大小写不敏感的情况
9、数组上插入或删除的算法
数组上插入元素的方法:
寻找插入位置,移动元素空出位置,插入元素
插入算法模型:
寻找插入的位置-->index
循环空出位置
for(i = len - 1;i >= index;i--)
array[i + 1] = array[i]
元素插入空位置
array[index] = 数据
数组上删除元素的方法:
查找要删除的元素,移动删除元素,数组有效数据个数减一
查找元素的位置-->index
删除元素
for(i = index;i < len;i++)
{
array[i] = array[i + 1]
}
元素个数len减一:len = len - 1
10、基于链表的操作:
遍历、查找、删除、插入
遍历查找模型:
p = 头指针
while(p != NULL)
{
通过p获取数据
p = p->next
}
删除算法模型:
遍历找到要删除的节点-->p
记录待删除节点的前一个节点指针-->q
删除节点:
q->next = p->next;
free(p)
插入算法模型:
遍历链表找到插入位置前一个节点指针-->p
待插入节点指针-->q
插入节点:
q->next = p->next;
p->next = q
熟练掌握以上各种编程算法,理解编程的基本思想,通过勤加练习摸索出适合自己的
编程思维。将现实的问题转换成计算机的程序,是需要算法作为中间媒介的,所以算法
的设计要与人的习惯思维保持一致,才能使程序易读和易修改。
c/c++面试总结---c语言基础算法总结2的更多相关文章
- c/c++面试指导---c语言基础算法总结1
c语言基础算法总结 1 初学者学习任何一门编程语言都必须要明确,重点是学习编程方法和编程思路,不是学习语法规则,语法规则是为编程实现提供服务和支持.所以只要认真的掌握了c语言编程方法,在学习其它的语 ...
- 【自学编程】新手经常遇到的10大C语言基础算法,珍藏版源码值得收藏!
算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手.本文是近百个C语言算法系列的第二篇,包括了经典的Fibonacci数 ...
- 10个经典的C语言面试基础算法及代码
10个经典的C语言面试基础算法及代码作者:码农网 – 小峰 原文地址:http://www.codeceo.com/article/10-c-interview-algorithm.html 算法是一 ...
- C语言的10大基础算法
C语言的10大基础算法 算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手.本文包括了经典的Fibonacci数列.简易 ...
- Java入门与基础算法班 - 课程大纲
第1章 零基础转CS,如何准备? · 转专业找CS工作怎么办? · 零基础如何在最短时间内拿到offer? · 如何写好简历? · IT技术面试内容有哪些? · JAVA语言怎么入门? 第2章 数组与 ...
- [Coursera][计算导论与C语言基础][Week 10]对于“数组应用练习”课后习题的思考题的一些想法
(首先,关于Honor Code,我咨询过了Help Center,分享课后练习的思考题的想法是可以的(注意不是代码),但要标明引用,引用格式来源于https://guides.lib.monash. ...
- 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)
索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 五.透视.逆透视及分组 5.1 透视 所谓透视( ...
- C语言基础回顾
第一章 C语言基础 1. C语言编译过程 预处理:宏替换.条件编译.头文件包含.特殊符号 编译.优化:翻译并优化成等价的中间代码表示或汇编代码 汇编:生成目标文件,及与源程序等效的目标的机器语言代码 ...
- Java基础算法集50题
最近因为要准备实习,还有一个蓝桥杯的编程比赛,所以准备加强一下算法这块,然后百度了一下java基础算法,看到的都是那50套题,那就花了差不多三个晚自习的时间吧,大体看了一遍,做了其中的27道题,有一些 ...
随机推荐
- spring+springmvc+hibernate整合遇到的问题
spring+springmvc+hibernate整合遇到的问题2016年10月20日 23:24:03 守望dfdfdf 阅读数:702 标签: ssh学习经历的异常exception异常框架更多 ...
- Fragment中的方法findFragmentById(int id)的返回值探讨
在学习<Android编程权威指南>P124页的时候,遇到了这样的代码: 引起了我的疑问if的判断条件是(fragment==null),那执行完上一句 Fragment Fragment ...
- js之可迭代对象
遍历Array可以采用下标循环,遍历Map和Set就无法使用下标.为了统一集合类型,ES6标准引入了新的iterable类型,Array.Map和Set都属于iterable类型. 具有iterabl ...
- c#winform循环播放多个视频
环境: vs2015 +winform 首先,vs自带组件很方便,所以,用windowMediaplayer组件,如果做单曲循环播放的话,加个属性: axWindowsMediaPlayer1.set ...
- mysql六:mysql内置功能(视图、触发器、事务、存储过程、函数)
一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 通过使用视图可以把查询过程中的 ...
- 支持触屏的zepto轮播图插件
占个座,有时间再写,呵呵 关于zepto.js,官方标准版是不支持touch的.可以去github下载压缩包,里面有所有支持的模块.我用的zepto.js,是经过打包的,包括polyfill zept ...
- iOS Touch ID 简易开发教程
转自:NsstringFromName 支持系统和机型 iOS系统的指纹识别功能最低支持的机型为iPhone 5s,最低支持系统为iOS 8,虽然安装iOS 7系统的5s机型可以使用系统提供的指纹解锁 ...
- 【Linux】文件操作函数(系统调用函数)
重点在于学习--思路与方法 举一反三 一.文件描述符 系统分配给文件的数字编号 二.函数学习 P.S.Man命令使用方法 manual 前三个章节 命令:系统调用函数:库函数 man read //r ...
- To find names containing exactly five characters, use “^”and “$”to match the beginning and end of the name, and five instances of “.”in between: mysql
To find names containing exactly five characters, use “^”and “$”to match the beginning and end of th ...
- MySQL命令行导入导出sql文件
linux下 一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):1.导出数据和表结构(常用):mysqldump -u用户名 -p密码 数据库名 > 数据库名. ...