我相信大多数人都知道,如果函数输入大小为n,嵌套循环的复杂度为O(n ^ 2)
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
...
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这是类似的,通过一个类似的论点,但我不确定任何人都可以确认?
for(int i = 0, max = n*n; i < max; i++{
...
}
Run Code Online (Sandbox Code Playgroud)
如果是这样,我猜有些类型的代码,除了递归和子程序之外,其大O映射并不是很明显.
让我说我得到了:
char *p = NULL;
Run Code Online (Sandbox Code Playgroud)
我确定这个会出现问题,因为我要取消引用一个NULL指针:
*p = 16;
Run Code Online (Sandbox Code Playgroud)
另一方面,我认为这个可以,因为我得到*p的地址NULL本身不是:
char **pp = &p;
Run Code Online (Sandbox Code Playgroud)
在这两种情况下我都是对的吗?
我想观察中心极限定理并写下这个程序.但是我很困惑,我必须这样观察.有什么不对吗?
xx
xxx
xxxx
xxxxx
xxxxxx
xxx
xxxx
xxx
x
x
Run Code Online (Sandbox Code Playgroud)
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
Func();
}
public static void Func()
{
Random r = new Random();
int[] d = new int [10];
int sum;
for (int k = 0; k < 5000; k++)
{
sum = 0;
for (int i = 0; i < 50; i++)
sum += r.Next(0, 10000);
Set(d, sum/50);
}
DispResult(d);
}
private static void DispResult(int[] d)
{
for …Run Code Online (Sandbox Code Playgroud) 如果没有显式的转换,编程语言能否"完整" ?从本质上讲,使用缺少显式类型转换的语言有什么我们不能做的吗?
例如,下面的帖子演示了Java需要显式类型转换来编写自定义泛型类.
是否有其他示例用例我们绝对需要显式转换?
我想知道,是否可以定义一个API并将其作为TM图灵机的输入,输出将是代码c或任何其他自然/编程语言?
我猜不是,但我如何通过减少等正式展示?
阅读文章Evil单元测试,我不确定为什么单元测试永远不要使用DB,网络或文件系统。如果是网络应用程序怎么办?
今天我在python中用线程计算素数有一个问题.它几乎和没有线程一样慢(参见问题).
现在我创建了相同的代码,认为使用pthread在C中不存在python问题.
#include <stdio.h>
#include <time.h>
#include <pthread.h>
int isPrime(int number) {
int i;
for (i=2; i<number; i++) {
if (number % i == 0 && i != number) return 0;
}
return 1;
}
void calcPrimeNumbersFromNtoM(int n, int m){
for (int i = n; i <= m; i++) {
if (isPrime(i)) {
//printf("%i\n",i);
}
}
}
void *calcFirstHalf(){
calcPrimeNumbersFromNtoM(1,5000);
return NULL;
}
void *calcSecondHalf(){
calcPrimeNumbersFromNtoM(5001,10000);
return NULL;
}
void calcThreadedPrimenumbers(){
pthread_t t1, t2;
pthread_create(&t1, NULL, calcFirstHalf, NULL); …Run Code Online (Sandbox Code Playgroud) 我有一个方法接受一个对象的引用作为const,这个方法不会改变方法的任何内容,而const表明,这个方法也调用了类中的其他方法,并且是无效的不接受任何参数,也是虚拟的,这意味着扩展基类的类可以覆盖方法,但它也需要是const.例如:
#include <iostream>
class Boz
{
public:
virtual void introduce() const = 0;
};
class Foo
{
public:
virtual void callable() const
{
// ...
}
void caller(const Boz& object) const
{
callable();
object.introduce();
}
};
class Bar : public Boz
{
public:
void introduce() const
{
std::cout << "Hi." << std::endl;
}
};
class Biz : public Foo
{
public:
void callable() const
{
std::cout << "I'm being called before the introduce." << std::endl;
}
};
int main(void)
{ …Run Code Online (Sandbox Code Playgroud) 我试图使用double *data = new double[14141414]()声明将文件的数据读入动态声明的数组.注意,它是一个大文件; 因此阵列的大小.
问题是我无法将所有数据放入数组中,因为索引= 14000000左右执行只会停止.
代码编译得很好(没有错误).我做了调试,并new返回一个地址,而不是0或NULL.所以看起来内存分配没有问题(即内存不足).我甚至在没有数组分配的情况下将文件回显到屏幕,只是为了看到我能够很好地读取文件.一切看起来都不错
然而,当我开始将数据放入数组时,程序将停止接近结束但是在随机位置,有时它将是1400万,有时索引会稍微多一些,有时会少一点.有几次程序运行良好.
有人知道发生了什么吗?我怀疑计算机耗尽了物理内存,从而导致程序的这种行为.但如果是这样,那么为什么new运营商会返回一个地址呢?如果内存分配失败,它应该返回0还是NULL?
谢谢!!
更新:根据#Jonathan Potter的要求,我在这里包含了代码.谢谢!!真不错的主意!!
void importData(){
int totalLineCount = 14141414;
double *height = new (nothrow) double[totalLineCount]();
int *weight = new (nothrow) int[totalLineCount]();
double *pulse = new (nothrow) double[totalLineCount]();
string *dateTime = new (nothrow) string[totalLineCount];
int *year = new (nothrow) int[totalLineCount]();
int *month = new (nothrow) int[totalLineCount]();
int *day = new (nothrow) int[totalLineCount]();
fstream dataFile(file.location.c_str(), ios::in);
for (int i = 0; i < totalLineCount; i++) …Run Code Online (Sandbox Code Playgroud) 如果存在xz = y,则X是字符串y的前缀,如果x不等于y,则x是正确的前缀.
只是想确保我正确理解这个概念.
例如,如果有一个字符串y ="abracadabra"是否意味着有大量可能的前缀?因此,如果x是前缀,则x可以等于"a","ab","abr"或甚至"abracadabra",但在这种情况下,当x = y时,它现在被称为不正确的前缀我认为.但是,我不确定x = y的最后一部分是否仍然可以被认为是前缀?
如果没有成员是另一个成员的正确前缀,则语言是无前缀的.
再次,不确定我是否正确理解它.例如,如果有一种语言="你好,世界!我的名字是安德鲁",我想,它是无前缀的,因为每个成员的开头都是彼此不同的.但是,如果我们有"你好,世界!你好吗?" 这种语言不再是无前缀的,因为"H"是"Hello"和"How"的前缀.我的思维方式是正确的还是我误解了什么?
我正在阅读的书中没有给出示例,这似乎是一个简单的话题,所以我想这可能是我找不到更详细解释的原因.但无论如何,我只是想确保我不会误解任何事情.
我会很感激所有的答案.谢谢.