首页 文章
  • 0 votes
     answers
     views

    C - 无法弄清楚如何使用互斥锁计算线程

    我正在用C编写多线程合并排序 . 上下文:用户使用适当的标志运行程序,例如“./mergeSort 100 -t 20” 第一个数字代表程序生成和排序的随机数,-t标志代表使用线程,最后一个数字代表程序应该使用的最大线程数(当程序达到最大线程数时,它继续使用标准合并排序而不使用多线程) . 为了计算线程数,我使用全局变量number_of_units和互斥锁,但我不能,在我的生活中,做对了 . 标...
  • 10 votes
     answers
     views

    如何修复这种非递归奇偶合并排序算法?

    我正在寻找非递归奇偶合并排序算法,并找到了两个来源: 来自Sedgewick R.的书 这个SO question 两种算法都相同但是错误 . 生成的排序网络不是奇偶合并排序网络 . 以下是具有32个输入的结果网络的图像 . 2条水平线之间的垂直线表示将值a [x]与[y]进行比较,如果大于,则交换数组中的值 . odd-even-merge sort for 32 inputs h...
  • -5 votes
     answers
     views

    pthread段错误发生在哪里?

    在我的程序中,我提供了一个包含文本文件的目录 . 每个文本文件包含以下格式的几百行 Username,Password,BloodType,Domain,Number 然后,我为目录中的每个文件创建一个线程,该线程将这些行合并(按数字排序)到数组char * text_lines [6000]; 我无法弄清楚为什么我会遇到分段错误,因为我在每次运行时都会得到不同的输出 . 继承我的代码: #in...
  • 0 votes
     answers
     views

    Java线程从另一个线程重新分配本地线程变量

    这是一个多线程mergesort程序 . 第一轮线程对数组的各个部分进行排序,然后它们需要开始连接在一起(即,线程1加入线程0,线程0将它们合并在一起) . 我不知道如何从线程1获取endRow并将其传递给线程0以便它可以合并 . 这是我到目前为止: 制作所有主题: public static void sort(int[] X, int numThreads){ int n = X.le...
  • 1 votes
     answers
     views

    mergesort使用多少内存?

    目前我正在实现一个需要(n)空间的标准mergesort . 我的RAM是8GB,一个100万个数字的文本文件是7.8MB,可以按合并排序排序,但是当我运行程序时有一个200万的文本文件(15.6MB)有一个分段错误 . 我的问题是,如果有办法计算我可以排序的最大整数数,并且我的RAM与我可以排序的最大整数数有任何关系吗?
  • 2 votes
     answers
     views

    合并排序实现查询

    我在教程网页上找到了这个合并排序算法的例子,我一直试图理解代码实现了算法 . 我发现的示例使用递归和临时数组来排序未排序算法的数组 . 我的查询是在该过程的最后一步 . 将临时数组的元素复制到原始数组中以对数组进行排序 . 为什么算法递减右属性而不是递增左属性?当我增加左左值时,算法不起作用 . class Assignment1 { static void Main(string[] a...
  • 1 votes
     answers
     views

    mergesort运行速度比基数排序快

    我使用我的Merge sort和Radix排序实现了一百万个随机正数,长度约为20位 . 合并排序显着,几乎是Radix排序的6倍 . 我理解Radix排序的时间复杂度也取决于整数的位数,但我的合并实现在所有输入大小上击败了我的Radix实现 . 我正在使用我自己的队列类,它在我的基数排序中具有常量时间push()和pop() . 我在合并排序中使用数组 . 这与此有关吗? public stat...
  • -1 votes
     answers
     views

    我的合并sort.h文件中的代码导致未定义的引用有什么问题?

    我一直收到的错误是g -Wall -std = c 11 -o assign8 assign8.o assign8.o:函数 void mergeSort<int>(std::vector<int, std::allocator<int> >&, bool (*)(int const&, int const&))': assign8.cp...
  • 316 votes
     answers
     views

    为什么quicksort比mergesort更好?

    我在接受采访时被问到这个问题 . 他们都是O(nlogn),但大多数人使用Quicksort而不是Mergesort . 这是为什么?
  • 0 votes
     answers
     views

    为什么我的mergesort实现比冒泡排序和插入排序慢?

    我试图比较不同排序算法的时间复杂度(时间执行) . 我正在比较冒泡排序,插入排序,快速排序和融合排序(mergesort) . 我知道合并排序和快速排序比其他排序更快,但是当我尝试比较这些方法的执行时间时,合并排序总是比其他方法花费更多的时间 . 我尝试了1,000个元素到10,000个元素的列表 . 谁能告诉我为什么? 这是我的mergesort代码: def inserer(element, ...
  • 2 votes
     answers
     views

    了解合并排序和快速排序的运行时间

    对于合并排序和快速排序,我试图想出最糟糕的情况 . 如果我是正确的,在排序所有内容时合并排序最差的情况O(nlogn) . 快速排序最糟糕的情况是当枢轴处于最不理想的位置,并且数组被排序,因此它变为O(n ^ 2) . 我想知道这是否正确,所以如果没有,请纠正我 . 我真正的问题是,如果快速排序的数据库位于数组的中间,那么数组必须是什么才能使它成为O(n ^ 2)?
  • 0 votes
     answers
     views

    对于faser搜索,在进行二分查找之前不应该对数据进行合并排序,或者直接跳转到线性搜索?

    我正在学习算法并且在某些情况下对它们的应用有疑问 . 存在分而治之的合并排序和二元搜索 . 两者都比线性增长更快 . 假设我想在大量数据列表中搜索某些值 . 我不知道数据是否已排序 . 如何不进行线性搜索,为什么不首先进行合并排序然后进行二元搜索 . 会更快吗?或者应用合并排序然后结合二进制搜索的过程会比线性搜索更慢吗?为什么?它取决于数据的大小吗?

热门问题