How to use merge sort algorithm in C++
How to use the merge sort algorithm in C
Merge sort is a classic sorting algorithm. It uses the idea of the divide and conquer method to divide the sequence to be sorted into Sort two subsequences separately, and then merge the two ordered subsequences into one ordered sequence. Below, we will introduce how to use C language to implement the merge sort algorithm and give specific code examples.
- Algorithm Idea
The core idea of merge sort is to split the sequence to be sorted into multiple subsequences, then perform recursive call sorting on the subsequences, and finally sort the sequence. The subsequences are merged.
The specific steps are as follows:
1) If the sequence length is 1, it means it has been ordered, and returns directly
2) Divide the sequence into two subsequences equally, and make recursive calls to the two subsequences respectively. Sorting
3) Merge two ordered subsequences into one ordered sequence
- Code example
The following is the implementation of the merge sort algorithm using C language Code example:
#include <iostream> #include <vector> using namespace std; // 合并两个有序子序列 void merge(vector<int>& arr, int left, int mid, int right) { int i = left; // 左子序列起始索引 int j = mid + 1; // 右子序列起始索引 int k = 0; // 临时数组起始索引 vector<int> temp(right - left + 1); // 临时数组 // 比较两个子序列的元素,将较小的元素放入临时数组中 while (i <= mid && j <= right) { if (arr[i] <= arr[j]) { temp[k++] = arr[i++]; } else { temp[k++] = arr[j++]; } } // 将剩余的元素复制到临时数组中 while (i <= mid) { temp[k++] = arr[i++]; } while (j <= right) { temp[k++] = arr[j++]; } // 将临时数组的元素复制回原数组 for (int m = 0; m < k; ++m) { arr[left + m] = temp[m]; } } // 归并排序递归函数 void mergeSort(vector<int>& arr, int left, int right) { if (left < right) { int mid = (left + right) / 2; // 递归调用排序 mergeSort(arr, left, mid); mergeSort(arr, mid + 1, right); // 合并两个有序子序列 merge(arr, left, mid, right); } } // 归并排序函数 void mergeSort(vector<int>& arr) { mergeSort(arr, 0, arr.size() - 1); } int main() { vector<int> arr = {4, 6, 2, 8, 9, 1, 5, 3, 7}; // 调用归并排序函数 mergeSort(arr); // 输出排序结果 for (int i = 0; i < arr.size(); ++i) { cout << arr[i] << " "; } cout << endl; return 0; }
The above code is an example of using C to implement the merge sort algorithm. First, a merge
function is defined to merge two ordered subsequences. Then the mergeSort
function is defined, which is used to make recursive calls for merge sorting. Finally, the mergeSort
function is called in the main
function to sort the sequence to be sorted and output the sorting result.
- Summary
The merge sort algorithm is an efficient and stable sorting algorithm with a time complexity of O(nlogn). Through recursive calls and merge operations, merge sort can divide the sequence to be sorted into small blocks for sorting, and then merge the ordered subsequences into an ordered sequence. Through specific code examples implemented in C language, we can better understand and master the implementation process of the merge sort algorithm.
The above is the detailed content of How to use merge sort algorithm in C++. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

This article details C function return types, encompassing basic (int, float, char, etc.), derived (arrays, pointers, structs), and void types. The compiler determines the return type via the function declaration and the return statement, enforcing

Gulc is a high-performance C library prioritizing minimal overhead, aggressive inlining, and compiler optimization. Ideal for performance-critical applications like high-frequency trading and embedded systems, its design emphasizes simplicity, modul

This article details C functions for string case conversion. It explains using toupper() and tolower() from ctype.h, iterating through strings, and handling null terminators. Common pitfalls like forgetting ctype.h and modifying string literals are

This article explains C function declaration vs. definition, argument passing (by value and by pointer), return values, and common pitfalls like memory leaks and type mismatches. It emphasizes the importance of declarations for modularity and provi

This article examines C function return value storage. Small return values are typically stored in registers for speed; larger values may use pointers to memory (stack or heap), impacting lifetime and requiring manual memory management. Directly acc

This article analyzes the multifaceted uses of the adjective "distinct," exploring its grammatical functions, common phrases (e.g., "distinct from," "distinctly different"), and nuanced application in formal vs. informal

This article details efficient STL algorithm usage in C . It emphasizes data structure choice (vectors vs. lists), algorithm complexity analysis (e.g., std::sort vs. std::partial_sort), iterator usage, and parallel execution. Common pitfalls like

This article explains the C Standard Template Library (STL), focusing on its core components: containers, iterators, algorithms, and functors. It details how these interact to enable generic programming, improving code efficiency and readability t
