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道题,有一些 ...
随机推荐
- DJango小总结二
1.Django请求的生命周期 武彦涛: 路由系统 -> 试图函数(获取模板+数据=>渲染) -> 字符串返回给用户 2.路由系统 王腾: ...
- etcd单机集群
etcd在单机部署集群,可以先弄清楚配置文件参数的意思.起3个集成监听不同的端口号 1. 启动 在/etc/soft/etcd/node1文件夹中,创建脚本start1.sh etcd --name ...
- Hibernate中的一对一注解配置
Card类 package cn.OneToOne2017109.entity; import javax.persistence.*; /** * Created by YSS on 2017/10 ...
- Portals
Portals Portals 提供了一种很好的将子节点渲染到父组件以外的 DOM 节点的方式. const appRoot = document.getElementById('app-root') ...
- RBG灯颜色渐变(颜色要尽可能多)程序分析
相信很多调过RBG灯的朋友都是通过分别改变R.B.G的占空比来改变颜色的,但是不是发现了一个问题,那就是不管怎样调都很难实现几十种颜色的变化,一般只有是7种颜色的渐变.下面给朋友们分享一个可以实现几十 ...
- matlab练习程序(单源最短路径Bellman-Ford)
该算法可以用来解决一般(边的权值为负)的单源最短路径问题,而dijkstra只能解决权值非负的情况. 此算法使用松弛技术,对每一个顶点,逐步减少源到该顶点的路径的估计值,直到达到最短的路径. 算法运算 ...
- 本机浏览器访问不到Linux虚拟机中的nginx开启页面
1.使用该执行打开端口文件vi /etc/sysconfig/iptables 2.随便复制一行现有内容,将你要打开的端口设置上就行了,这里是打开80端口-A INPUT -m state --sta ...
- SELECT s.* FROM person p INNER JOIN shirt s ON s.owner = p.id WHERE p.name LIKE 'Lilliana%' AND s.color <> 'white';
SELECT s.* FROM person p INNER JOIN shirt sON s.owner = p.idWHERE p.name LIKE 'Lilliana%'AND s.color ...
- Win7 自带FTP将文件复制到FTP服务器时发生错误。
错误截图: 错误信息: 将文件复制到FTP服务器时发生错误.请检查是否有权限将文件放到该服务器上. 详细信息: 200 Type set to I. 200 PORT commad successfu ...
- mysql便于管理的几个shell脚本
[mysql@clark scripts]$ lsmysql_db_shutdown.sh mysql_db_startup.sh mysql_env.ini mysqlplus.sh[mysq ...