鴻蒙OS 4.0公測機型公布:甚至連nova6都支持
華為全新的HarmonyOS 4.0操作系統將于今天下午正式登場,官方在發布會之前也已經正式給出了可升級的機型產品,這意味著這些機型會率先支持升級享用。這次的HarmonyOS 4.0支持
歸并排序是一種常見的排序算法,它采用分治法的思想,在排序過程中不斷將待排序序列分割成更小的子序列,直到每個子序列中只剩下一個元素,然后將這些子序列兩兩合并排序,最終得到一個有序的序列。
public static void MergeSort(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); } } public static void Merge(int[] arr, int left, int mid, int right) { int n1 = mid - left + 1; // 左半部分數組的長度 int n2 = right - mid; // 右半部分數組的長度 // 創建臨時數組 int[] leftArr = new int[n1]; int[] rightArr = new int[n2]; // 將數據拷貝到臨時數組 for (int i = 0; i < n1; ++i) { leftArr[i] = arr[left + i]; } for (int j = 0; j < n2; ++j) { rightArr[j] = arr[mid + 1 + j]; } // 合并兩個有序數組 int k = left; // 初始化合并后的數組索引 int p = 0; // 初始化左半部分數組的索引 int q = 0; // 初始化右半部分數組的索引 while (p < n1 && q < n2) { if (leftArr[p] <= rightArr[q]) { arr[k] = leftArr[p]; p++; } else { arr[k] = rightArr[q]; q++; } k++; } // 復制左半部分數組的剩余元素 while (p < n1) { arr[k] = leftArr[p]; p++; k++; } // 復制右半部分數組的剩余元素 while (q < n2) { arr[k] = rightArr[q]; q++; k++; } } public static void MergeSortRun() { int[] array = { 19, 27, 46, 48, 50, 2, 4, 44, 47, 36, 38, 15, 26, 5, 3 }; Console.WriteLine("排序前數組:" + string.Join(", ", array)); MergeSort(array, 0, array.Length - 1); Console.WriteLine("排序后數組:" + string.Join(", ", array)); }
圖片
歸并排序是一種高效穩定的排序算法,時間復雜度為O(nlogn)。它的核心思想是將待排序序列分割成更小的子序列,然后逐步合并并排序這些子序列,最終得到一個有序序列。歸并排序需要額外的空間來存儲臨時數組,但由于其分治的特性,適用于對鏈表和外部存儲的排序。
本文鏈接:http://www.tebozhan.com/showinfo-26-12750-0.html聊聊C#歸并排序算法
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com