C/C++
文章平均质量分 53
Nozuowilldie
这个作者很懒,什么都没留下…
展开
-
复习排序-冒泡排序
冒泡排序两两交换,遍历整个数组,将最大值(最小值)提取到数组的底部(顶部)。算法时间复杂度为O(n^2)算法实现一:两层循环,第一层循环减少每次遍历的元素个数,第二层循环通过两两比较、交换实现最小值沉入底部。void BubbeSort(int *num, int length){ inti,j; for(i=0;i<length-1;i++) for(j=0;j<l原创 2015-09-16 18:54:29 · 398 阅读 · 0 评论 -
最大公约数和最大公倍数
求最大公约数的方法:辗转相除法,过程如下 1、当a%b == 0,那么a与b的最大公约数就是b。 2、当a%b != 0,那么有tmp = a%b; a = b; b = tmp。求最大公倍数的方法:两数相乘除以它们的最大公约数。 代码如下(VS2015)#include "stdafx.h"//最大公约数int greatestCommonDivisor(int a, int b) {原创 2016-04-18 20:17:28 · 758 阅读 · 0 评论 -
浮点变量值的比较问题
笔试多益时做过一道题:如何判断浮点数是否等于0? 当时很天真,答案如下double a = 0.00001;if(0 == a)printf("a equal zero\n");笔试后一交流发现不同意这种做法的很多,理由是浮点数的精度问题。推荐的做法是当浮点数处于一定精度范围内时,则判断该浮点数等于0。double a = 0.00001;if(a > -0.000001 && a < 0.0原创 2016-04-18 18:36:22 · 612 阅读 · 0 评论 -
ACM输入问题以及矩阵最大路径累加和
#include "stdafx.h"#include #include #include int max(int a, int b){ int tmp; tmp = a<b?b:a; return tmp;}int findMaxValue(int **p,int n, int m){ int i,j; //先求第一行的累加值 for(i=0;i<n-1;i++)原创 2016-04-02 22:13:52 · 1506 阅读 · 0 评论 -
编写程序计算sentence中有多少个单词,并指出其中最长和最短的单词 C++
C++ Primer 9.39已知有如下string对象:原创 2014-08-02 16:58:25 · 2049 阅读 · 0 评论 -
复习排序-归并排序
归并排序两两归并排序,递归和非递归方法。待排序元素有n个,可以将n个元素分为n/2个归并组,余下的按n/4个为归并组,直到最后完全归并。算法实现一:递归归并。void Mergesort(int *num,int length){ int *sort = (int*)malloc(length*sizeof(int)); if(sort == NULL) ex原创 2015-09-16 19:30:12 · 386 阅读 · 0 评论 -
复习排序-堆排序
堆排序二叉树的性质是堆排序的关键点。二叉树的性质5,如果一颗有n个结点的完全二叉树的结点按层序编号(从第一层到最后一层,每层从左往右),则对任一结点i(1(1) 如果i=1,则结点i是二叉树的根节点;如果i>1,则其双亲是结点i/2(取整数部分)。(2) 如果2i>n,则结点i无左孩子;否则其左孩子是结点2i。(3) 如果2i+1>n,则结点i无右原创 2015-09-16 19:22:44 · 380 阅读 · 0 评论 -
复习排序-希尔排序
希尔排序变增量的直接插入排序,关键之处在于直接插入排序的比较步进值是从大减小到1。算法的时间复杂度为O(nlogn)。算法实现一:步进值采用increment = increment/3+1,三层循环结构。最外一层为步进值的递减循环,中间两层为直接插入排序。void ShellSort(int *num,int length){ int increment = length;原创 2015-09-16 19:09:47 · 361 阅读 · 0 评论 -
复习排序-直接插入排序
直接插入排序每次将待排序的元素插入到已经排好的序列中,需要已排好序的元素发生移动。算法实现一:通过哨兵tmp记录每次要插入的元素值,在已排好序的元素移动完成后将tmp值插入到循环停止的地方。voidDirectorInsertSort(int *num,int length){ int tmp,i,j; for(i=1;i<length;i++) { i原创 2015-09-16 19:01:38 · 359 阅读 · 0 评论 -
复习排序-简单选择排序
简单选择排序不需要一直做两两交换元素值,而是交换下标。在一轮比较结束时才交换元素值。算法实现一:通过tmp来代替待选择排序的元素,依次与数组元素比较,交换下标值。voidSimpleSelectSort(int *num ,int length){ int i,j; for(i=0;i<length-1;i++) { tmp = i; f原创 2015-09-16 18:58:27 · 342 阅读 · 0 评论 -
for循环效率
《高质量程序设计语言》提到for循环遍历数组中“先行后列”和“先列后行”有不同的效率。这个勾起了我的兴趣,原文介绍的应该是针对二维数组及其以上的多维数组。效率不同的原因是不同的语言安排数组元素的存储空间的顺序不一样。比如C/C++语言按照“先行后列”的顺序安排数组元素的存储空间。Fortran语言按照“先列后行”的顺序安排数组元素的存储空间。会导致什么后果呢? 引用书中的例子来说明,假设二维数组n原创 2016-04-18 22:13:20 · 1209 阅读 · 0 评论