C语言基础--算法

算法的基本概念

以下只是个人学习的笔记,由于我也是刚接触,所以有可能有错误,如有错误,请指出

算法:是解决一个问题的完整的步骤描述,是解决问题的策略、规则、方法。

1.算法的特征:有穷性、确定性、可行性、输入、输出

(1).有穷性:一个算法必须在执行有穷步之后结束并且在每一步都在有穷时间内完成,不能无限的 执行下去。 算法不能出现死循环,如计算一个累加的程序,必须要指定一个最终要加的值,如果不指定,那么这个程序将会死循环,如计算1+2+3+···+99+100,如果没有指定最终的值100,那么他就是一个死循环

(2).确定性:一个算法里面的每条语句,必须都是确定的,不能存在二义性,也就是说,语句不能 出现两种效果或者两种意思

(3).可行性:算法里面的语句必须都是可执行的,比如y=0,z=x/y,这里就是不可行的,因为分母不能为0

(4).输入:一个算法里面包含多个或者0个输入,输入语句用scanf表示,如  多个输入:int a,b,c   scanf("%d,%d,%d,"&a,&b,&c);  0个输入:main{    printf("abc");   }

(5).输出:算法内必须要有输出,用printf表示,如果程序没有输出,那么这个程序将没有意义

2.算法的优劣:正确性、可读性、健壮性、时间复杂度与空间复杂度

(1).正确性:一个算法必须要满足具体问题的要求,当输入合法的输入算法必须能正确的输出结果

(2).可读性:为了方便阅读和修改,一个算法不能写的过于复杂,如果算法写的非常复杂,不利于自己或者别人修改和阅读

(3).健壮性:这里的健壮性指的是,当用户输入一个非法的数据,程序应当给予提醒,比如z=x/y,要求用户输入x和y,用户输入x为1,y为0,分母不能为0,在这里,当用户输入为0时,最好给用户提醒,y不能等于0

(4).时间复杂度与空间复杂度:一个程序运行时,都会需要相应的运行时间,如果是小一点的程序,运行时间不会感觉到慢,但是大一点的程序,如果运行时间就会很重要了,就比如QQ,如果每次打开QQ都需要好几个小时,那这样会影响用户的使用。空间复杂度指打开改程序需要的存储空间,但是以计算机的发展,电脑的配置越来越高,这个已经不太重要了

算法的描述

1.算法:算法设计、算法分析

算法设计:主要研究怎样针对某一特定类型的问题设计出求解步骤  算法分析:主要讨论所涉及的算法步骤的正确性和复杂性

2.算法描述:对于一些问题的求解步骤,需要一种表达方式,即为算法描述

算法描述可分为自然语言、流程图、N-S流程图等

(1).自然语言:就是普通语言表达这个算法的步骤,自然语言比较通俗易懂,但是容易产生歧义,如果描述比较复杂的算法不是很方便,所以一般很少用自然语言来描述算法

(2).流程图:是一种传统的算法表示方式,用一些图框来表示算法的不同操作,用流程线来表示算法的执行方向,看起来比较直观,并且易于理解

(3).N-S流程图:和上面说的流程图一样,只不过取掉了流程线,将流程图画在一个矩形框里

算法的结构

算法的结构:顺序结构、循环结构、选择结构(分支结构)

(1).顺序结构:是简单的线性结构,各操作是按照它们出现的先后顺序执行的

(2).选择结构(分支结构):必须包含一个判断框,然后根据判断框进行下一步的操作

(3).循环结构:反复的执行一系列 操作,知道条件不成立的时候才终止循环  循环结构可分为当型循环结构、直到型循环结构  当型循环结构:先判断条件,在执行语句。当条件成立时,进行下一步操作  直到循环结构:先执行语句,在判断条件。执行语句,直到条件成立后在进行下一步操作

时间: 2024-08-11 03:34:20

C语言基础--算法的相关文章

c/c++面试总结---c语言基础算法总结2

算法是程序设计的灵魂,好的程序一定是根据合适的算法编程完成的.所有面试过程中重点在考察应聘者基础算法的掌握程度. 上一篇讲解了5中基础的算法,需要在面试之前熟练掌握,本篇讨论剩余的基础算法. 先看一个面试题目:设计一个函数,求一个给定字符串中所有数字的和. 例如:给定字符串 “abc12fas123dfaf34”, 计算结果为:12 + 123 + 34 = 169 其中包括了:求和方法.字符串遍历方法.数字字符转成数字的方法 多位数字组合成整数的方法 必须熟练掌握以上四种基础算法,才能解决该问

C语言基础算法

// // main.c // 选择排序 // // Created by king on 15/10/20. // Copyright © 2015年 king. All rights reserved. // #include <stdio.h> int main(int argc, const char * argv[]) { // 定义数组 int array[5] = {23, 56, 36, 89, 50}; // 计算数组长度 int length = sizeof(array)

基础算法

c语言基础算法大全 冒泡排序 选着排序 插入排序 快速排序 shell排序. 合并排序. 下面是各个排序算法的实现: 冒泡排序 void bobuleSort(int a[], int len) { int i,j,flag =1; for(i = 0; i<len; i++) { for(int j =len-1; j>i; j--) { if(a[j] <= a[i]) { int tmp = a[j]; a[j] = a[i]; a[i] = tmp; flag = 0; } }

C语言的10大基础算法

C语言的10大基础算法 算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手.本文是近百个C语言算法系列的第二篇,包括了经典的Fibonacci数列.简易计算器.回文检查.质数检查等算法.也许他们能在你的毕业设计或者面试中派上用场. 1.计算Fibonacci数列 Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1.1.2.3.5.8.13.21. C语言实现的代码如下: /* Displ

C语言排序算法复习

排序算法有很多种,这里在复习和分析的基础上,做一个自己的总结: 首先要知道有哪些排序算法,google一下,有云C语言7大经典排序算法(也有8大).主要包括冒泡排序,快速排序,选择排序,插入排序,希尔排序,归并排序,堆排序,8大的还有基数排序.各有各的版本,代码写法也各不相同.所以这里以整理思路为先,代码只是作为自己的一个备份. 搞清楚的概念:稳定排序和不稳定排序,就看序列中两个值相等的数,排完序之后的相对位置是否改变,如果改变了就不稳定. 内部排序和外部排序,只用到内存即可完成排序的就叫内部排

最最最最最最最最基础的C---C简介和基础算法

C简介 C是一门程序设计语言,面向过程的语言.于1972至1973年设计出来的语言. C具有32个关键字,9种控制语句,34种运算符. 函数是C的基本单位:一个C程序的执行总是从main函数开始的. C程序运行步骤:源程序--编译-->目标文件--执行-->可执行目标程序. 基础算法 完整的程序设计=数据结构+算法+程序设计方法+语言工具 算法特效: 1.有穷性:一个算法包含有限的操作步骤 2.确定性:确定算法的每一个步骤都是确定的 3.有零个或多个输入 4.有一个或多个输出 5.有效性:算法

MiS603 开发板2.2 Verilog HDL硬件语言基础

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ 2.2 Verilog HDL硬件语言基础 2.2.1 技术背景 大规模集成电路设计制造技术和数字信号处理技术,近三十年来,各自得到了迅

java--java语言基础(4)--黑马程序员

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- java语言基础(4) 主要内容:<循环结构while.do...while.for.嵌套循环.跳转> 1 循环结构while语句的格式和基本使用 第一种循环结构: while循环: 格式: while(逻辑表达式){ //循环体代码.需要重复执行的代码 } 说明: 1.逻辑表达式:必须返回一个boolean类型的结果: 2.如果返回true:执行循环体: 3.循环体执行完毕,回到上面的&q

基础算法(一)

首先必须得说本人对算法研究不深,一些简单的就得想半天,老是这样感觉不太好,遂记录下一些常见的基础算法,避免尴尬.不足之处请各位多多指教. 其次,用vs写C语言程序时可能会出现如下错误:错误 C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online hel