编程提高
算法、编程技巧
GNG
哥尼斯堡,我的故乡。
展开
-
编程能力提高--------ACM/OJ机试快速入门篇
目录:1、OJ上做题,可能遇到的反馈信息及其原因分析2、EOF详解(OJ入门必须理解之)3:OJ系统推荐---------------------------------------------------------------------分割线-----------------------------------------------一、可能收到的反馈信息包括: 1、原创 2016-03-23 09:40:33 · 5628 阅读 · 0 评论 -
编程能力提高-----循环的设计技巧(for、while)
循环是程序设计中接触最多code。在进行数值计算的时候,循环往往是用来做累加或累乘的。累加和累乘都有通用的数学模型:Sn=Sn−1+AnS_n=S_{n-1}+A_n和Tn=Tn−1∗AnT_n=T_{n-1}*A_n。根据这两个数学模型,很容易构造出循环体。例1:实现一个函数,求1+2+3+…+100的和。int sum (int n){ int s=0; for(int i=1原创 2017-05-09 19:57:07 · 1376 阅读 · 0 评论 -
算法导论-------快速排序QuickSort
目录: 一、快速排序思想介绍 二、实现的三步骤(分解、子问题求解、合并) 三、C代码实现 3.1 快速排序双向扫描法(一)3.2 partition函数双向扫描法(二)3.3 partition函数单向扫描法 四、时间空间复杂度分析 五、动画演示一、快速排序思想介绍 快速排序(QuickSort)是对冒泡排序(BubbleSort)的一种改进。排序效率在同为O(N*logN)原创 2016-11-22 12:32:53 · 4569 阅读 · 3 评论 -
编程能力提高-----用牛顿迭代法求输入的数的平方根
迭代法 迭代法在网上有一个形象的比喻:军人在进攻时常采用交替掩护进攻的方式,若在数轴上的点表示A,BA,B两人的位置,规定在前面的数大于后面的数,则是A>B,B>AA>B,B>A交替出现。但现在假设军中有一个胆小鬼,同时大家又都很照顾他,每次冲锋都是让他跟在后面,每当前面的人占据一个新的位置,就把位置交给他,然后其他人再往前占领新的位置。也就是A始终在B的前面,AA向前迈进,BB跟上,AA把自己的原创 2016-11-15 19:08:04 · 2272 阅读 · 0 评论 -
算法导论-----排序的9种实现(C/C++)
目录A、冒泡排序B、选择排序C、插入排序D、折半插入排序E、归并排序F、快速排序G、希尔排序堆排序、基数排序、桶排序后续补充。。。。。A、冒泡排序冒泡排序有很多种实现方式。下面总结常见的几种,并对冒泡排序进行改进。 冒泡排序1//冒泡升序排序1,强烈推荐,好记void BubbleSort(int arr[],int length) { int tmp; in原创 2016-11-23 23:30:40 · 2184 阅读 · 0 评论 -
算法导论------ShellSort希尔排序
目录1.Shellsort的思想2.代码实现3.增量序列4.算法分析5.参考资料 Shellsort是最古老的排序算法之一,该算法以其发明者Donald L. Shell的名字命名(1959)。在ShellSort排序算法之前的算法时间复杂度基本都是O(n2)O(n^2),该算法是突破这个时间复杂度的第一批算法之一。另外 Shellsort 是快速、易于理解和易于实现的。 然而,其复杂原创 2016-11-25 18:29:22 · 4593 阅读 · 5 评论 -
算法导论------堆排序heapsort
目录1.堆排序概述2.二叉堆3.二叉堆的存储4.维护堆的性质5.建堆操作6.堆排序7.C代码实现8.参考资料1.堆排序概述 简单选择排序是:假设排序序列为L[1...n]L[1...n],第i趟排序从L[i...n]L[i...n]中选择关键字最小(大)元素与L[i]L[i]交换,每一趟排序可以确定一个元素到最终的位置上,这样经过n−1n-1趟排序就可以使得整个排序序列有序。可惜原创 2016-12-02 00:32:36 · 6180 阅读 · 0 评论 -
编程能力提高------蛇形填数(方块填数+三角形填数)
回忆曾经:考研复试上机做题时,遇到过一次这个蛇形填数问题,当时不会做;后来又遇到一个蛇形填充(基于三角形),也不会做;这让我下定决心,一定要找到问题的解,哪怕是抄别人的代码。后来才知道,这种问题,是学习ACM的入门问题。以下内容参考《算法竞赛入门经典(第2版)刘汝佳》问题描述:在n*n方阵里填入1,2,„,n*n,要求填成蛇形。例如n=4时方阵为 10 1原创 2016-05-24 15:50:34 · 3229 阅读 · 0 评论 -
编程能力提高-----rand和srand的用法
概述 首先总体来看:srand初始化随机种子,rand产生随机数,这两个函数都在stdlib.h头文件当中。rand(伪随机数发生器)1.表头文件: #include “stdlib.h” 2.函数原型 : int rand(void) 连续调用 rand 将返回 0 到 int 类型的最大可表示的正值(含该值)之间的整数值,它们是一个伪随机数生成器所产生的连续结果。在标准 C 中,原创 2016-11-16 17:30:24 · 840 阅读 · 0 评论 -
把字符串转换成整数
问题描述 问题:把一个字符串转换成整数。 在今年的秋招中遇到这个题目。讲真,完全想不到用人单位的笔试试卷会这么水,照搬剑指offer。但细细思量,这个题目虽简单,却能很好地反应出程序员的思维和编程习惯。但在考场上尽写出了基本功能,忽略了特殊输入(如带符号位、非法输入)、系统能表示的最大正整数和最小的负整数以及溢出、异常处理等问题,就连对输入参数的合法性判断都没写,真是罪过。问题分析在学C语言原创 2016-11-06 20:27:29 · 985 阅读 · 0 评论 -
编程能力提高------- 一维数组总结
在程序设计中,为了处置便利,把具有一样类型的若干变量按有序的办法组织起来。这些按序摆放的同类数据元素的集称为数组。数组在学习,对编程能力的提高,起着关键性的作用,下面对一维数组,进行总结:进入正题============》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》首先,看一个demo#include #include #include #defin原创 2016-07-21 15:55:47 · 954 阅读 · 0 评论 -
面试算法1---栈和队列
文章目录一、设计一个有getMin功能的栈二、由两个栈组成的队列三、用一个栈实现另一个栈的排序一、设计一个有getMin功能的栈实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。pop、push、getMin操作的时间复杂度都是O(1);设计的栈类型可以使用现成的栈结构。import java.util.Stack;public class MySta...原创 2019-09-08 09:18:25 · 140 阅读 · 0 评论