行云

行至水穷处,坐看云起时。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
上一页 1 ··· 3 4 5 6 7 8 9 10 11 12 下一页

2012年6月6日

摘要: 按排序过程中依据的不同原则可分为:1 插入排序2 选择排序3 交换排序4 归并排序5 计数排序按照时间复杂度可分为:1 简单的排序方法 O(n^2), 包括直接插入排序、冒泡排序、选择排序2 先进的排序方法O(nlogn), 包括归并排序、快速排序、堆排序3 基数排序 O(d.n)各种算法的实现默认一般都是按升序排序。按稳定性分稳定排序,所有复杂度为O(n^2)的简单排序都是稳定的,基数排序也是稳定的。不稳定排序,所有性能较好的排序方法都是不稳定的。插入排序:依次插入一个未排序元素到已排序的序列中。插入排序是稳定排序,因它是每次考虑连续的两个元素。说一种方法是稳定的,是说为实现排序,它可以是稳 阅读全文
posted @ 2012-06-06 22:49 windflying 阅读(287) 评论(0) 推荐(0) 编辑

摘要: 模板函数c++模板类/模板函数的声明与定义应该放在头文件里,不要分开来写类中函数的声明与定义(比如在.H文件里声明某个成员函数,在.CPP文件里定义该成员函数),这样会导致连接错误。所应该将模板类/模板函数的定义与声明写在一个.h文件里。STL 排序一个类型,如果要支持调用STL sort进行排序,那么应该实现operator<, 赋值操作。读取字符串(包括空格)fgets的输入包含有换行符gets的没有例如: 如果输入Hello+回车fgets: "Hello\n"gets: "Hello"指针减法指针减指针等于两个指针之间的元素的个数。例如:i 阅读全文
posted @ 2012-06-06 22:40 windflying 阅读(319) 评论(0) 推荐(0) 编辑

2012年6月5日

摘要: 提交了N次,还是TLE。郁闷~~ 事实证明要选C++ 无语#include <stdio.h>#include <stdlib.h>inline void swap(int *a, int i, int j){ int temp; temp = a[j]; a[j] = a[i]; a[i] = temp;}//找比k大的最小数 前提:a[b...e]是倒序的 并且总是存在一个比k大的数int find(int *a, int b, int e, int k){ if (b == e) return b; if (b+1 == e) { ... 阅读全文
posted @ 2012-06-05 10:37 windflying 阅读(157) 评论(0) 推荐(0) 编辑

摘要: 如何调用STL排序模版对内置类型数组进行排序?函数:void sort( iterator start, iterator end );排序数组 int a[n]sort(a, a+n);如果要把algrithom中的函数应用于数组,对于需要iterator参数的地方,传递的都是相应的地址next_primutation(a, a+n)函数:void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));比较函数的定义为:int cmp(const void *a, const void 阅读全文
posted @ 2012-06-05 09:13 windflying 阅读(193) 评论(0) 推荐(0) 编辑

2012年6月4日

摘要: 1 求第k个排列2 求给定排列在全排列中的序号3 求下k个排列#include <iostream>#include <stdlib.h>//#include <algorithm>#include <map>#include <time.h>using namespace std;unsigned int mp[1000+1] = {1, 1, 2, 6, 24, 120, 720};unsigned int Fatorail(int n){ unsigned int value=1; if (mp[n]) return mp[n] 阅读全文
posted @ 2012-06-04 21:04 windflying 阅读(335) 评论(0) 推荐(0) 编辑

2012年5月28日

摘要: C=A*B以C来划分,假设线程数为m,矩阵维度为n*n。那么每个线程计算C的元素个数为n*n/m;/*矩阵并行计算C=A*B --- C(i,j)等于A的第i行乘以第j列*/#include <stdio.h>#include <time.h>#include <stdlib.h>#include <math.h>#include <windows.h>/* 生成n*n矩阵*/void GenerateMatrix(float *m, int n);void PrintMatrix(float *p, int n);void Gene 阅读全文
posted @ 2012-05-28 21:38 windflying 阅读(4485) 评论(0) 推荐(0) 编辑

摘要: 将整个矩阵分解为这样的小块,每次完成一对小块的计算,以提高Cache的命中率。提示:图中n=N/m计算次序为A11*B11, A11*B12,…, A11*B1n,,由于反复使用A11,因此可以提高Cache的命中率。/*矩阵分开计算C=A*B --- C(i,j)等于A的第i行乘以第j列*/#include <stdio.h>#include <time.h>#include <stdlib.h>#include <math.h>#include <windows.h>/* 生成n*n矩阵*/void GenerateMatrix( 阅读全文
posted @ 2012-05-28 20:43 windflying 阅读(10950) 评论(0) 推荐(0) 编辑

2012年5月20日

摘要: const对象并不是什么都不可改变的class A {public: int x, y;};class B {public: A *t; int *c, d;};void foo(const B& ob){ //ob.t++; //不合法 //ob.d++; //不合法 ob.t->x++; //合法 *(ob.c) = 3; //合法}在如上代码中const修饰的寓意相当于:A *t 转变成 A* const t;int *c 转变成 int* const c;int d 转变成 const int d;因此ob.t->x++是合法的*(ob.c) ... 阅读全文
posted @ 2012-05-20 09:26 windflying 阅读(219) 评论(0) 推荐(0) 编辑

2012年5月15日

摘要: #define N 10int lis[N+1][N+1];int *LIS(int *a){ for (int i=1; i<=N; i++) { lis[i][0]=1; lis[i][1]=a[i]; for (int j=1;j<i; j++) { if (a[i]>lis[j][lis[j][0]]) { lis[j][0]++; lis[j][lis[j][0]] = a[i]; } ... 阅读全文
posted @ 2012-05-15 23:04 windflying 阅读(320) 评论(0) 推荐(0) 编辑

摘要: N个数中选M个数的组合问题#define N 5#define M 4char answer[N];void Print(char a[], int n){ for (int i=0; i<n; i++) { cout << a[i] << " "; } cout << endl;}void Combination(char a[], int b, int n, int k){ if (k == 0) { Print(answer, M); return; } if (k==n) { ... 阅读全文
posted @ 2012-05-15 21:31 windflying 阅读(192) 评论(0) 推荐(0) 编辑

上一页 1 ··· 3 4 5 6 7 8 9 10 11 12 下一页