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. JVM如何加载一个类的过程,双亲委派模型中有哪些方法

    1.类加载过程:加载.验证.准备.解析.初始化   加载   在加载阶段,虚拟机主要完成三件事: 1.通过一个类的全限定名来获取定义此类的二进制字节流. 2.将这个字节流所代表的静态存储结构转化为方法 ...

  2. C#学习笔记10

    1.匿名类型:匿名类型是C#3.0新增的特性,是强类型(由编译器后台在生成为CIL时,自动声明的代码定义类型),声明与初始化属性后其属性是尽读属性.只有在属性的名称.顺序.类型一致时,多个声明匿名变量 ...

  3. 使用angular帮你实现拖拽

    拖拽有多种写法,在这里就看一看angular版的拖拽. <!DOCTYPE html> <html ng-app="myApp"> <head> ...

  4. 1e6等于多少?

    如果抽象成这样:aeb 要求a不能不写,也就是说是1也要写上 b必须是整数. 实现上就是 a*10^b a乘以10的b次方 所以楼主的就是1*10^6 100000

  5. CSS如何设置换行文字自动对齐

    CSS如何设置换行文字自动对齐 如图所示: 代码实现如下: <ul class='warn-page-content'>                <li>         ...

  6. spring boot 项目在启动时执行指定sql文件

    参考博客: https://www.jianshu.com/p/88125f1cf91c 1. 启动时执行 当有在项目启动时先执行指定的sql语句的需求时,可以在resources文件夹下添加需要执行 ...

  7. java中加密的方式概述

    加密是用一种特殊的算法改变原有的数据,使未经授权的用户即使获得了已经加密的信息,但不知其解密的方法,仍然无法了解信息的内容.     大体上分为单向加密和双向加密,双向加密又可分为对称加密和非对称加密 ...

  8. 使用 richtextbox 输出程序运行信息

    private delegate void Refresh_CallBack(Color color,string text); private void ControlsRefresh(Color ...

  9. 【Leetcode】【Easy】Balanced Binary Tree

    Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...

  10. PHP程序员应当如何保持与时俱进?

    记得之前在某个论坛上看到别人说php程序员土,作为一名php程序员内心当然是不乐意的.不过别人这么说也不是完全没有道理,其实他说php程序员土应该指的就是php程序员不懂得与时俱进. 当然,这也不全是 ...