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的更多相关文章

  1. c/c++面试指导---c语言基础算法总结1

    c语言基础算法总结 1  初学者学习任何一门编程语言都必须要明确,重点是学习编程方法和编程思路,不是学习语法规则,语法规则是为编程实现提供服务和支持.所以只要认真的掌握了c语言编程方法,在学习其它的语 ...

  2. 【自学编程】新手经常遇到的10大C语言基础算法,珍藏版源码值得收藏!

    算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手.本文是近百个C语言算法系列的第二篇,包括了经典的Fibonacci数 ...

  3. 10个经典的C语言面试基础算法及代码

    10个经典的C语言面试基础算法及代码作者:码农网 – 小峰 原文地址:http://www.codeceo.com/article/10-c-interview-algorithm.html 算法是一 ...

  4. C语言的10大基础算法

    C语言的10大基础算法 算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手.本文包括了经典的Fibonacci数列.简易 ...

  5. Java入门与基础算法班 - 课程大纲

    第1章 零基础转CS,如何准备? · 转专业找CS工作怎么办? · 零基础如何在最短时间内拿到offer? · 如何写好简历? · IT技术面试内容有哪些? · JAVA语言怎么入门? 第2章 数组与 ...

  6. [Coursera][计算导论与C语言基础][Week 10]对于“数组应用练习”课后习题的思考题的一些想法

    (首先,关于Honor Code,我咨询过了Help Center,分享课后练习的思考题的想法是可以的(注意不是代码),但要标明引用,引用格式来源于https://guides.lib.monash. ...

  7. 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)

    索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 五.透视.逆透视及分组 5.1 透视 所谓透视( ...

  8. C语言基础回顾

    第一章 C语言基础 1.  C语言编译过程 预处理:宏替换.条件编译.头文件包含.特殊符号 编译.优化:翻译并优化成等价的中间代码表示或汇编代码 汇编:生成目标文件,及与源程序等效的目标的机器语言代码 ...

  9. Java基础算法集50题

    最近因为要准备实习,还有一个蓝桥杯的编程比赛,所以准备加强一下算法这块,然后百度了一下java基础算法,看到的都是那50套题,那就花了差不多三个晚自习的时间吧,大体看了一遍,做了其中的27道题,有一些 ...

随机推荐

  1. .net编程知识点

    一.编程思想 OOP(面向对象) 面向对象三大特性(多态如何体现)及五项原则 AOP(面向切面编程) 面向切面编程静态植入和动态植入 二.c#23种设计模式 三.Castle是针对.NET平台的一个开 ...

  2. double类型计算

    下面两个例子体现两个运算规则 一.四舍五入 //四舍五入 double doublenum = Math.Round(12.5, MidpointRounding.AwayFromZero); //两 ...

  3. 编程进阶:Java小白的序列化Serializable接口

    在之前的学习过程中,我们知道了如何使用FileInputStream输入流和FileOutputStream输出流编写程序读写文件. 下面我们来学习一下如何使用序列化和反序列化读写文件. 一.序列化 ...

  4. javaSE练习1——变量和运算符

    一.已知a,b均是整型变量,写出将a,b两个变量中的值互换的程序.(知识点:变量和运算符综合应用): package com.test; public class t01 { public stati ...

  5. intellij idea里神坑的@autowire

    当你写完项目的时侯serviceimpl层下的@autowire->对应的是dao层的注入,其下面会出现一条红线 在Intellij Idea开发工具在@Autowired或者@Resource ...

  6. Sql server 0x80131904

    这是一个比较让人纠结的错误. 背景:添加了网站的分支,要拿一个现有的数据库做一个新的数据库的东东. 首先就是还原备份,然后做代码的修改.然而在登录的时候报了这个错误.0x80131904 什么插入的列 ...

  7. js变量定义提升、this指针指向、运算符优先级、原型、继承、全局变量污染、对象属性及原型属性优先级

    原文出自:http://www.cnblogs.com/xxcanghai/p/5189353.html作者:小小沧海 题目如下: function Foo() { getName = functio ...

  8. vue.extend与vue.component的区别和联系

    一味的闷头开发,却对基础概念缺乏理解,是个大坑... 查阅官网后现对自己的理解记录一下,用于日后复习巩固 Vue.extend({}) 简述:使用vue.extend返回一个子类构造函数,也就是预设部 ...

  9. 在MAC上搭建python数据分析开发环境

    最近工作转型到数据开发领域,想在本地搭建一个数据开发环境.自己有三年python开发经验,马上想到使用numpy.scipy.sklearn.pandas搭建一套数据开发环境. ubuntu的环境,百 ...

  10. Word中划线的方法(五种)

    Word中划线的方法(五种): 1. 按CTRL+F9,在出现的黑底花括号内,如图输入内容, 最后按SHIFT+F9(或者右键菜单点切换域代码),以后可以反复按ALT+F9在代码与结果之间切换. 注: ...