算法、解决方法、其性能的比较 - 页 11 1...456789101112131415161718...23 新评论 TheXpert 2017.12.10 21:56 #101 Artyom Trishkin:到目前为止,我们其余的人只敢嘲笑和指责。真的吗?这里有另一种观点。一个人来到一个他完全不知道的线上,他立即被要求离开,并把它带到了他最喜欢的地盘。他最后转到了一个单独的分支,并提出了一个难以理解的问题,而这个问题与该分支中正在讨论的泛型或实践毫无关系。他甚至没有对试图用胡言乱语指出错误的行为作出回应。这并不是他第一次这样做。哦,你这个可怜的家伙。也许你也是那些通过数组排序 搜索而不明白是怎么回事的人之一? Alexandr Andreev 2017.12.10 22:12 #102 Комбинатор:真的吗?这里有另一种观点。一个人来到一个他不知道的线上,他立即被要求离开,他把它带到他最喜欢的爱好。他最后转到了一个单独的分支,并提出了一个难以理解的问题,而这个问题与该分支中正在讨论的泛型或实践毫无关系。他甚至没有对试图用胡言乱语指出错误的行为作出回应。这并不是他第一次这样做。哦,你这个可怜的家伙。也许你也是那些通过数组排序 搜索而不明白是怎么回事的人之一?你知道,很久以前,我第一次学习如何编程--然后我发现有关于编程的教科书。掌握OOP和其他东西也是如此。不过,事实就是事实。 没有人举例说明。有和没有使用床单的两个例子(即没有类)。当然,没有使用任何字符串数组(这是对没有类的变体)。 Alexandr Andreev 2017.12.10 22:15 #103 排序的问题总是相关的--是否有比标准函数更快的排序选项,一般来说,代码是什么?....,我记得有不同的排序方式,取决于要排序的数组的大小--以及使用额外内存来加速的可能性。 Renat Akhtyamov 2017.12.10 22:19 #104 如果能在数字上看到表现最好的算法,至少在执行时间上 是很有趣的。到目前为止,看起来我们正在捍卫我们的版本是最好的。然而,这种自我评估的标准并不明确。 Artyom Trishkin 2017.12.10 22:24 #105 Комбинатор:真的吗?这里有另一种观点。一个人来到一个他不知道的主题,他立即被要求离开这个主题,他把它带到了他最喜欢的主题。他最后转到了一个单独的分支,并提出了一个难以理解的问题,而这个问题与该分支中正在讨论的泛型或实践毫无关系。他并没有真正解决问题。 更重要的是,当他试图指出错误时,他是妄想。这并不是他第一次这样做。哦,你这个可怜的家伙。也许你也是那种做了最大限度的数组排序 的人,只是不明白发生了什么事?是的,我同意...这是意料之中的 事,但我想从彼得那里得到的东西却截然不同(如果你试着分析一下我给他提供的东西,我的目标就会很清楚)。我也同意这一点。但创建这个主题是为了一个不同的目的--展示、讨论。 但不是为了笑。这与被冒犯有什么关系呢?这是一场闹剧。首先是彼得在瓦西里那里开始的,我让他在这里安静地讨论,而不仅仅是彼得的。这个想法是不同的--不是为了嘲笑错误的观念,而是为了讲述,解释...而且,更有趣的是--尝试想出有趣的算法。你明白吗?不是吗?:)))当然了。我不知道这一点:))) Artyom Trishkin 2017.12.10 22:27 #106 Renat Akhtyamov:如果能在数字上看到表现最好的算法,至少在执行时间上 是很有趣的。到目前为止,这似乎都是在为自己的版本辩护,认为它是最好的。然而,这种自我评估的标准并不明确。有--我想很多人都会对这个感兴趣。好吧,每个人都知道,彼得在他的自我中顽固地证明了奇怪的事情--而且每个人都厌倦了它。 就个人而言,我希望彼得把他的坚持引向另一个方向--不是去开辟一个菜园,而是去了解提供给他的东西。 Renat Akhtyamov 2017.12.10 22:40 #107 Artyom Trishkin:有--我想很多人都会对这个感兴趣。好吧,彼得,盯着他自己的事实,证明了奇怪的地方--这里每个人都知道,每个人都厌倦了它。 就个人而言,我希望彼得把他的坚持引向不同的方向--不是为了开辟一个菜园,而是为了了解他所提供的东西。通过了解函数的执行时间,例如重复10 000次,任何算法的运行时间都更容易预测/计算。但我没有遇到过无论多么复杂的代码都不能完成到最后的问题。 正如他们所说的那样--MQL好样的! Alexey Oreshkin 2017.12.10 22:53 #108 Artyom Trishkin:有--我想很多人都会对这个感兴趣。好吧,彼得在他自己身上的固执,证明了奇怪的事实--这里每个人都知道,而且每个人都已经厌倦了它。 就个人而言,我希望彼得把他的坚持引向不同的方向--不是开辟一个菜园,而是了解提供给他的东西。 没有人反对帮助和解释,等等。但彼得在如此多的主题中把一切都简化为同样的事情,没有解释和帮助的意愿。 Artyom Trishkin 2017.12.10 22:54 #109 Alexey Oreshkin: 没有人反对帮助和解释等等。但彼得在如此多的主题中把一切都归结为同一件事,以至于没有解释和帮助的意愿。 Sergey Dzyublik 2017.12.10 23:08 #110 Artyom Trishkin:到目前为止,我在这里看到的都是对那个敢于在这里发布解决方案的人的嘲讽。很明显,它是...说句不客气的话,这至少是个笑话。但他做到了。其余的人到目前为止只有嘲笑和指责的勇气。#include <Generic\ArrayList.mqh> //+------------------------------------------------------------------+ //| Defines | //+------------------------------------------------------------------+ #define TEST_LOG true #define TEST_START(NAME) string TEST_START_STRING_INFO_##NAME = StringFormat("%s, Step:%s, Test was started....", __FUNCTION__, string(NAME)); \ if (TEST_LOG) Print(TEST_START_STRING_INFO_##NAME); \ ulong TEST_TIMER_##NAME = GetMicrosecondCount(); #define TEST_END(NAME) ulong TEST_DURATION##NAME = GetMicrosecondCount() - TEST_TIMER_##NAME; \ string TEST_END_STRING_INFO_##NAME = StringFormat("%s, Step:%s, Test has been finished. Duration: %I64i.", __FUNCTION__, string(NAME), TEST_DURATION##NAME); \ if (TEST_LOG) Print(TEST_END_STRING_INFO_##NAME); #define TEST_DURATION(NAME) TEST_DURATION##NAME #define TEST_ERROR_INVALID_VALUE(NAME) string TEST_ERROR_STRING_INFO_##NAME = StringFormat("%s, Step:%s, Getting value does not match the original one.", __FUNCTION__, string(NAME)); \ if (TEST_LOG) Print(TEST_ERROR_STRING_INFO_##NAME); \ DebugBreak(); \ break; #define TEST_ERROR_NULL_GENERATOR(NAME) string TEST_ERROR_STRING_INFO_##NAME = StringFormat("%s, Was not found correspond Generator class - %s. Please implement it.", __FUNCTION__, string(NAME)); \ if (TEST_LOG) Print(TEST_ERROR_STRING_INFO_##NAME); //+------------------------------------------------------------------+ //| Generators | //+------------------------------------------------------------------+ template<typename T> interface IGenerator{ T GetNext(int index); }; class IntGenerator : public IGenerator<int>{ int GetNext(int index){return index;} }; // TODO bypass the problem with explicit template specialization template<typename T> IGenerator<T>* CreateGenerator(){ string generatorName = typename(T); StringToUpper(generatorName); if (generatorName == "INT"){ return new IntGenerator(); } return NULL; } //template<> //IGenerator<int>* CreateGenerator<int>(){ // return NULL; //}; //+------------------------------------------------------------------+ //| TestCollection Interfaces | //+------------------------------------------------------------------+ template<typename T> interface ITestRandomAccessCollection{ bool Add(T value); T GetValue(int index); }; //+------------------------------------------------------------------+ //| TestCollection Implementations | //+------------------------------------------------------------------+ template<typename T> class TestRandomAccessCollectionCArrayList : public ITestRandomAccessCollection<T>{ CArrayList<T> collection; public: TestRandomAccessCollectionCArrayList(){}; TestRandomAccessCollectionCArrayList(int capacity):collection(capacity){}; bool Add(T value){ return collection.Add(value); }; T GetValue(int index){ int value = -1; collection.TryGetValue(index,value); return value; }; }; //+------------------------------------------------------------------+ //| Test Functions | //+------------------------------------------------------------------+ template<typename T> ulong TestRandomAccessCollectionAfterAdding(ITestRandomAccessCollection<T> &testCollection, const int iterationCount = 1000, int srandValue = 0){ //TODO add shared_ptr / move out generator (Dependency Injection) IGenerator<T>* generator = CreateGenerator<T>(); if (generator == NULL){ TEST_ERROR_NULL_GENERATOR("FirstGenerator") return 0; } if (srandValue == 0) srandValue = int(TimeCurrent()); T validationArray []; ArrayResize(validationArray,iterationCount); for(int i = 0; i < iterationCount; i++){ T value = generator.GetNext(rand()); testCollection.Add(value); validationArray[i] = value; } TEST_START ("GetValue") for(int i = 0; i < iterationCount; i++){ int index = rand() % iterationCount; T value = testCollection.GetValue(index); T originalValue = validationArray[index]; if (value != originalValue){ TEST_ERROR_INVALID_VALUE("Validate") } } TEST_END ("GetValue") return TEST_DURATION("GetValue"); } int OnInit() { ulong result; // TODO average result { printf ("TestRandomAccessCollectionAfterAdding: Started.", result); TestRandomAccessCollectionCArrayList<int> testCollection(); result = TestRandomAccessCollectionAfterAdding(testCollection, 10000, 1); printf ("TestRandomAccessCollectionAfterAdding: Fineshed. Total result: %I64i\n", result); } //TestArrayListRandomAccessDuringAdding(10000); return INIT_FAILED; } 1...456789101112131415161718...23 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
到目前为止,我们其余的人只敢嘲笑和指责。
真的吗?这里有另一种观点。
一个人来到一个他完全不知道的线上,他立即被要求离开,并把它带到了他最喜欢的地盘。
他最后转到了一个单独的分支,并提出了一个难以理解的问题,而这个问题与该分支中正在讨论的泛型或实践毫无关系。
他甚至没有对试图用胡言乱语指出错误的行为作出回应。
这并不是他第一次这样做。
哦,你这个可怜的家伙。
也许你也是那些通过数组排序 搜索而不明白是怎么回事的人之一?
真的吗?这里有另一种观点。
一个人来到一个他不知道的线上,他立即被要求离开,他把它带到他最喜欢的爱好。
他最后转到了一个单独的分支,并提出了一个难以理解的问题,而这个问题与该分支中正在讨论的泛型或实践毫无关系。
他甚至没有对试图用胡言乱语指出错误的行为作出回应。
这并不是他第一次这样做。
哦,你这个可怜的家伙。
也许你也是那些通过数组排序 搜索而不明白是怎么回事的人之一?
你知道,很久以前,我第一次学习如何编程--然后我发现有关于编程的教科书。掌握OOP和其他东西也是如此。
不过,事实就是事实。 没有人举例说明。
有和没有使用床单的两个例子(即没有类)。
当然,没有使用任何字符串数组(这是对没有类的变体)。
排序的问题总是相关的--是否有比标准函数更快的排序选项,一般来说,代码是什么?....,我记得有不同的排序方式,取决于要排序的数组的大小--以及使用额外内存来加速的可能性。
如果能在数字上看到表现最好的算法,至少在执行时间上 是很有趣的。
到目前为止,看起来我们正在捍卫我们的版本是最好的。
然而,这种自我评估的标准并不明确。
真的吗?这里有另一种观点。
一个人来到一个他不知道的主题,他立即被要求离开这个主题,他把它带到了他最喜欢的主题。
他最后转到了一个单独的分支,并提出了一个难以理解的问题,而这个问题与该分支中正在讨论的泛型或实践毫无关系。
他并没有真正解决问题。 更重要的是,当他试图指出错误时,他是妄想。
这并不是他第一次这样做。
哦,你这个可怜的家伙。
也许你也是那种做了最大限度的数组排序 的人,只是不明白发生了什么事?
是的,我同意...这是意料之中的 事,但我想从彼得那里得到的东西却截然不同(如果你试着分析一下我给他提供的东西,我的目标就会很清楚)。
我也同意这一点。但创建这个主题是为了一个不同的目的--展示、讨论。
但不是为了笑。这与被冒犯有什么关系呢?这是一场闹剧。首先是彼得在瓦西里那里开始的,我让他在这里安静地讨论,而不仅仅是彼得的。这个想法是不同的--不是为了嘲笑错误的观念,而是为了讲述,解释...而且,更有趣的是--尝试想出有趣的算法。你明白吗?不是吗?
:)))当然了。我不知道这一点:)))
如果能在数字上看到表现最好的算法,至少在执行时间上 是很有趣的。
到目前为止,这似乎都是在为自己的版本辩护,认为它是最好的。
然而,这种自我评估的标准并不明确。
有--我想很多人都会对这个感兴趣。
好吧,每个人都知道,彼得在他的自我中顽固地证明了奇怪的事情--而且每个人都厌倦了它。
就个人而言,我希望彼得把他的坚持引向另一个方向--不是去开辟一个菜园,而是去了解提供给他的东西。
有--我想很多人都会对这个感兴趣。
好吧,彼得,盯着他自己的事实,证明了奇怪的地方--这里每个人都知道,每个人都厌倦了它。
就个人而言,我希望彼得把他的坚持引向不同的方向--不是为了开辟一个菜园,而是为了了解他所提供的东西。
通过了解函数的执行时间,例如重复10 000次,任何算法的运行时间都更容易预测/计算。
但我没有遇到过无论多么复杂的代码都不能完成到最后的问题。
正如他们所说的那样--MQL好样的!有--我想很多人都会对这个感兴趣。
好吧,彼得在他自己身上的固执,证明了奇怪的事实--这里每个人都知道,而且每个人都已经厌倦了它。
就个人而言,我希望彼得把他的坚持引向不同的方向--不是开辟一个菜园,而是了解提供给他的东西。
没有人反对帮助和解释等等。但彼得在如此多的主题中把一切都归结为同一件事,以至于没有解释和帮助的意愿。
到目前为止,我在这里看到的都是对那个敢于在这里发布解决方案的人的嘲讽。
很明显,它是...说句不客气的话,这至少是个笑话。但他做到了。其余的人到目前为止只有嘲笑和指责的勇气。