Wir erhalten ein unsortiertes Array von ganzen Zahlen. Die Aufgabe besteht darin, das Array mithilfe der durch Multithreading implementierten Merge-Sort-Technik zu sortieren sortierte Art und Weise kombiniert.
Ansonsten teilen Sie die Daten rekursiv in zwei Hälften auf, bis sie nicht mehr geteilt werden können.
Zum Schluss fügen Sie die kleineren Listen in sortierter Reihenfolge zu einer neuen Liste zusammen.
Multi-Threading
Multi-Threading ist eine Implementierung von Multitasking, bei der wir mehrere Threads auf einem einzelnen Prozessor ausführen können, um Aufgaben gleichzeitig auszuführen. Es unterteilt bestimmte Vorgänge innerhalb einer einzelnen Anwendung in separate Threads. Jeder Thread kann parallel laufen.
Zum Beispiel:
InOutput−Das sortierte Array ist: 1, 2, 3, 4, 5, 7, 8, 9, 10
Erklärung- Wir erhalten ein unsortiertes Array mit ganzzahligen Werten. Jetzt sortieren wir das Array mithilfe der Multithread-Zusammenführungssortierung.
In −int arr[] = {5, 3, 1, 45, 32, 21, 50}
Output−Das sortierte Array ist: 1, 3, 5, 21, 32, 45, 50 p>
Erklärung−Wir erhalten ein unsortiertes Array mit ganzzahligen Werten. Jetzt sortieren wir das Array mithilfe der Multithread-Zusammenführungssortierung.
Die im folgenden Programm verwendeten Methoden sind wie folgt:
Erstellen Sie ein Array vom Typ pthread_t, also P_TH[thread_size].
Starten Sie eine FOR-Schleife von i bis 0, bis i kleiner als die Größe des Threads ist. Innerhalb der Schleife wird die Methode pthread_create(&P_TH[i], NULL, Sorting_Threading, (void*)NULL) aufgerufen, um einen Thread mit dem angegebenen Array-Wert zu erstellen.
Rufen Sie die Funktion als combine_array(0, (size/2 - 1)/2, size/2 - 1), combin_array(size/2, size/2 + (size-1-size/2)/ 2 auf . Size - 1) und merge_array(0, (size - 1)/2, size - 1)
drucken das sortierte Array, das im Ganzzahltyp arr[] gespeichert ist.
Innerhalb der Funktion void* Sorting_Threading(void* arg)
Deklarieren Sie eine Variable von set_val bis temp_val++, zuerst set_val * (Größe / 4), Ende ist (set_val + 1) * (Größe / 4) - 1. mid_val ist first + (end - first) / 2
Überprüfen Sie, ob first kleiner als end ist, und rufen Sie dann Sorting_Threading(first, mid_val), Sorting_Threading(mid_val + 1, end) und kombinieren_array(first, mid_val, end) auf. ;
Deklarieren Sie die Variable als mid_val to first + (end - first) / 2
Überprüfen Sie, ob IF kleiner als end first ist. Rufen Sie dann Sorting_Threading(first , mid_val), Sorting_Threading(mid_val + 1, end) und merge_array(first, mid_val, end) auf Deklarieren Sie die Variable als int * start to new int[mid_val - first + 1], int* last to new int[end - mid_val], temp_1 to mid_val - first + 1, temp_2 to end - mid_val, i, j, k to Erste.
Das obige ist der detaillierte Inhalt vonImplementieren der Zusammenführungssortierung in C++ mithilfe von Multithreading. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!