سلام من این کد به C++ رو دارم و می خوام با openmp موازی اش کنم (کد مرتب سازی درختی هست) ولی متاسفانه طبق قانون موازی سازی بعد از اجرای موازی کاملا اعداد به هم ریخته نشون میده میشه راهنمایی کنید
#include "pch.h"
#include <iostream>
#include<string.h>
#include<new>
#include<omp.h>
#include<stdC++.h>
using namespace std;
struct Node
{
int key;
struct Node *left, *right;
};
struct Node *left, *right;
struct Node *newNode(int item)
{
struct Node *temp = new Node;
temp->key = item;
temp->left = temp->right = NULL;
return temp;
}
void storesorted(Node *root, int arr[], int &i)
{
if (root != NULL)
{
storesorted(root->left, arr, i);
arr[i++] = root->key;
storesorted(root->right, arr, i);
}
}
Node* insert(Node* node, int key)
{
if (node == NULL)return newNode(key);
if (key < node->key)
node->left = insert(node->left, key);
else if (key > node->key)
node->right = insert(node->right, key);
return node;
}
void treeSort(int arr[], int n)
{
struct Node *root = NULL;
root = insert(root, arr[0]);
for (int i = 1; i < n; i++)
insert(root, arr[i]);
int i = 0;
storesorted(root, arr, i);
}
int main()
{
//create input array
int arr[] = { 5, 4, 7, 2, 11 };
int n = sizeof(arr) / sizeof(arr[0]);
treeSort(arr, n);
#pragma omp parallel
{
int n = omp_get_num_threads();
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
}
return 0;
}
این نمایش کامپیوتر قبل از موازی سازی هستش
و این هم بعد از نوشتن همون خط openmp