我正在编写MergeSort,并编写了这段代码。问题是,我不确定我的实现是否正是这个算法应该工作的方式。根据我所读到的,列表被分成两半,直到所有列表的大小都是1,然后排序的列表被同时合并。例如,应将{2,4,1,5,8,7,6,3}分解为{2,4,1,5}和{8,7,3},然后进一步将这两种分解为{2,4},{1,5},{8,7}和{6,3}等等。但是,在我的代码中,{2,4,1,5}被分解为它的组件,然后在其他数组({8,7,6,3})被分解之前,将其完全排序。我想不出有什么方法可以同时处理这两个数组。我的代码似乎运行良好,但问题是:这段代码是MergeSort的有效实现吗?
public
我正在练习C#中的线程和并发性,并尝试实现基本的奇偶排序算法,使用一个线程处理偶数,另一个线程处理奇数排序。
static bool Sort(int startPosition, List<int> list)
{
bool result = true;
do
{
for (int i = startPosition; i <= list.Count - 2; i = i + 2)
{
对于我的类,我必须在多线程中实现合并排序算法,并将其时间与单线程版本进行比较。我知道它应该更快,但我得到的时候说的不是。对于大小为1000000+的数组,多线程版本会变得更快,即使这样,也不会有太大的差异。我正在提供我正在使用的代码。我做错了什么吗?我在多线程方面没有多少经验。
public Sorter() {
public void mergeSortMultiThread(int[] array, int start, int end){
if(start < end){
// Find the middle point
int m
这是一个多线程的合并排序程序。第一轮线程对数组的各个部分进行排序,之后它们需要开始连接在一起(即。线程1加入线程0,线程0将它们合并在一起)。我不知道如何从线程1获取endRow并将其传递给线程0,以便它可以合并。这是我到目前为止所知道的:
创建所有线程:
public static void sort(int[] X, int numThreads){
int n = X.length/numThreads;
for(int i = 0; i < numThreads; i++){
Thread t = new Thread(new worke
我有一个大型的Pandas DataFrame,列a和b (浮动中的坐标)和列c (值),必须在列a和b中的某一步上进行绑定和总结。结果的顺序是相关的,因为a和b模拟了采样时用c值采集的坐标。在接下来的步骤中,结果将被重新塑造成图像并进一步处理。
这可以使用嵌套循环来解决(参见下面),但是,对于较大的数据集或较小的步骤大小,它显然不能很好地扩展。
示例:
import pandas as pd
import time
import numpy as np
a = np.random.random(int(10E7))
b = np.random.random(int(10E7))
c = n