数据结构与算法
文章平均质量分 68
大只辉
IT难民——从事智能终端软件开发,熟悉并具备UCOS、openWRT、Linux、android、QNX操作系统项目开发经验。具备从驱动到上层应用APP全栈开发经验;
展开
-
算法排序问题
排序中的操作:1、比较(comparison) 2、交换(swap) 3、复制(copy)几种经典排序方法:1、简单排序( Simple Sort Algorithm) 2、插入排序(insertionsort algorithm) 3、选择排序(selection sortalgorithmanalysis)1、简单排序: 建立两个数组,一个安放无序数列,一个为空。 步骤: 1)将获取到的无序数字放进数组中。 2)循环3-5的步骤直到无序数组原创 2010-09-12 17:02:00 · 595 阅读 · 0 评论 -
排序算法 选择算法
<br />选择算法:<br />原创 2010-09-30 17:19:00 · 602 阅读 · 0 评论 -
经典算法100道(5)-求确定范围的最大约数
<br />// 求确定范围的最大约数.cpp : Defines the entry point for the console application.<br />/*<br />求出555555的约数中最大的三位数约数<br /> 算法分析:<br /> 求三位数的最大约数,那么可以把范围限制在100-999之间,<br /> 使用num/i看是否可以整除,第一个整除就是最大的约数。<br />*/<br />#include "stdafx.h"<br />#include <stdio.h>原创 2010-10-03 22:12:00 · 711 阅读 · 0 评论 -
动态数组 选择排序 二分搜索技术
<br /> <br />实验课程:算法分析与设计<br />实验名称:基于排序的二分搜索技术 <br />实验目标:<br />(1)理解分治法的基本思想。<br />(2)分析二分搜索算法的时间复杂度,加深对时间复杂的理解。<br />实验任务:<br />(1)产生实验数据,即可手动输入,又可随机产生。<br />(2)用C++语言编程实现一种排序算法,如:简单排序、插入排序、选择排序或其他排序方法。<br />(3)用C++语言编程实现二分搜索算法。<br />(4)记录二分搜索过程中比较的原创 2010-09-20 21:19:00 · 1485 阅读 · 0 评论 -
汉诺塔-算法实现
<br />使用递归方法来实现经典算法问题<汉诺塔问题>。<br /> <br />下面是本人的代码:<br /> <br /> <br /> <br />// 汉诺塔.cpp : Defines the entry point for the console application.<br />//将A中的圆块移动到C中。<br />#include "stdafx.h"<br />#include<stdio.h><br /> <br />void move(char,char);<br />void原创 2010-09-18 19:03:00 · 698 阅读 · 0 评论 -
统计数字问题
在算法的实验课上,我们的老师给我们出了一道算法题。算法问题出自《算法设计与实验题解》的课后练习1-1,问题描述如下:一本书的页码从自然数1开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如第6页用6表示而不是06或006。数字统计问题要求对给定书的总页码,计算出书的全部页码中分别用到多少次数字0,1,2,3,.....9。算法分析:这个算法使用递归的方法来实现,具体步骤如下:具体的算法思想是:说明:n为一个自然数,m表示为十进制数的位数(如1234,则n为1234,m原创 2010-09-16 17:12:00 · 7676 阅读 · 6 评论 -
经典算法100道(2)-绘制余弦曲线和直线相交
// 绘制余弦曲线和直线.cpp : Defines the entry point for the console application./*在屏幕上显示0~360度的cos(x)曲线与直线f(X)=45*(y-1)+31叠加图形。其中cos图形用×表示,f(X)用+号表示,在两个图形的交点处则用f(x)图形的符号。问题分析与算法设计: 本题可以在上题的基础上进行修改。图形叠加的关键是要在分别计算出同一行中的两个图形的列方向点坐标后,正确判断相互的位置关系。为此,可以先判断图形的相交点,在分别控制打印两原创 2010-09-19 21:18:00 · 1358 阅读 · 5 评论 -
经典算法100道(1)-绘制余弦曲线
<br />题目:在屏幕上用“*”显示“0~360”的余弦cos(x)曲线。<br /> <br />问题分析和算法设计:<br /> 在0~360度中,一行显示两个点,而在一般的显示器中只能按行输出,即先显示一行在显示另一行,不能再返回到上一行输出。为此,我们必须在一行中同时显示两个“*”。<br /> 要同时一行打印两个点,需要利用到cos(x)的左右对称性质。将屏幕的行方向定义为x列方向定义为y,则0~180度的图形和180~360度的图形是左右对称的。若定义图形的总宽度为62列,计算出x原创 2010-09-18 20:59:00 · 932 阅读 · 0 评论 -
统计数字问题-算法实现(暴力统计法)
<br />这是一个暴力统计法对数字问题的算法实现。<br /> <br />在编辑代码的过程中遇到了if语句在进行每个数字的分拆时遇到了1的个数缺少的问题,其最高为的1的个数缺少统计。<br />经过查明是因为if的使用只是基于判断使用,而我的代码中要使用到的是循环计数。因而要使用while来实现循环。<br /> <br />下面就是算法的实现过程:<br /> <br />// 暴力统计法.cpp : Defines the entry point for the console applicatio原创 2010-09-18 16:01:00 · 2243 阅读 · 0 评论 -
算法分析
<br />一、对于算法的时间和空间复杂性进行定量分析<br /> <br />二、分析算法时间复杂性的基本步骤<br /> 1、选择一种或多种元运算作为基本运算<br /> 2、表示出在算法运行期间基本运算执行的总频数<br /> 3、用渐近时间复杂性表示<br /> <br /> <br />三、时间复杂度分析:<br /> <br />元运算:<br /> •算术运算:主要有加、减、乘、除等运算。 •逻辑运算:主要有与、或、非等运算。 •关系运算:主要有大于、小于原创 2010-09-12 18:55:00 · 794 阅读 · 0 评论 -
经典算法100道(3)-绘制一个圆
// 100算法.cpp : Defines the entry point for the console application.///*绘制一个圆,打印圆可利用图形的左右对称性解决方案:设计圆的半径为R; 在打印圆的边时,先要确定圆的圆心,在求出圆的边的公式。再利用对称性对圆进行打印。 下面是两种方法在打印圆时用到的算法。比较之下,还是第二种最简单。而且打印出来的图形更接近圆形,同时在大半径和小半径时都可以画得非常圆。*/#include "stdafx.h"#include #include #原创 2010-09-30 20:13:00 · 819 阅读 · 0 评论