C++程式:將陣列元素升序排序
為了有效地解決一些問題,將資料項排列在正確的位置非常重要 順序。最受歡迎的排列問題之一是元素排序問題。這 本文將示範如何在 C 中按升序排列陣列成員(根據 值不斷上升)。
要按特定順序排列數字或非數字元素,有多種方法 排序演算法可用於該領域。只需兩種簡單的排序技術即可 將在本文中介紹。選擇排序和冒泡排序。讓我們逐一檢查一下 單獨使用適當的技術和 C 實作代碼。
使用冒泡排序技術依升序對陣列進行排序
對陣列元件進行排序的最受歡迎和最直接的方法之一是 冒泡排序方法。在此方法中,依序檢查兩個元素以 看看它們的順序是否正確。如果不是,則該方法會交換元素,直到它們 順序正確。之後,向右移動並對另一組重複此過程 的價值觀。單一元素在結束時被放置在正確的預期位置 冒泡分選技術的幾個階段的每個階段。看看冒泡排序 演算法.
演算法
- 讀取數組 A 及其大小 n 作為輸入
- 對於 i 的範圍從 0 到 n-1,執行
- 對於 j 的範圍從 0 到 n - 2,執行
- 如果 A[j] > A[j 1],則
- 交換 A[j] 和 A[j 1]
- 如果結束
- 如果 A[j] > A[j 1],則
- 結束
- 對於 j 的範圍從 0 到 n - 2,執行
- 結束
範例
#include <iostream> using namespace std; void display( int arr[], int n ){ for ( int i = 0; i < n; i++ ) { cout << arr[i] << ", "; } } void swap ( int &a, int &b ){ int temp = a; a = b; b = temp; } void solve( int arr[], int n ){ int i, j; for ( i = 0; i < n; i++ ) { for ( j = 0; j < n-1; j++ ) { if ( arr[j] > arr[ j+1 ] ) { swap( arr[j], arr[ j + 1 ] ); } } } } int main(){ int arr[] = {8, 45, 74, 12, 10, 36, 58, 96, 5, 2, 78, 44, 25, 12, 89, 95, 63, 84}; int n = sizeof( arr ) / sizeof( arr[0] ); cout << "Array before sorting: "; display(arr, n); solve( arr, n ); cout << "\nArray After sorting: "; display(arr, n); }
輸出
Array before sorting: 8, 45, 74, 12, 10, 36, 58, 96, 5, 2, 78, 44, 25, 12, 89, 95, 63, 84, Array After sorting: 2, 5, 8, 10, 12, 12, 25, 36, 44, 45, 58, 63, 74, 78, 84, 89, 95, 96,
使用選擇排序技術按升序對陣列進行排序
當使用選擇排序策略時,我們從索引 I 開始一直到結束 給定數組,找到最小或最大元素。假設我們是 揭示每一種成分。它定位從索引 I 到末尾的最小元素 每個階段,將元素放置在適當的位置,然後重複該過程 從索引 I 1 中尋找下一個最大元素,依此類推。這些階段即將完成, 然後整個數組將被適當排序。
演算法
- 讀取數組 A 及其大小 n 作為輸入
- 對於 i 的範圍從 0 到 n-1,執行
- ind := A 中從 i 到 n 的最小元素索引
- 如果 A[ i ] > A[ ind ],則
- 交換 A[ i ] 和 A[ ind ]
- 如果結束
- 結束
範例
#include <iostream> using namespace std; void display( int arr[], int n ){ for ( int i = 0; i < n; i++ ) { cout << arr[i] << ", "; } } void swap ( int &a, int &b ){ int temp = a; a = b; b = temp; } int min_index( int arr[], int n, int s, int e ){ int min = 99999, min_ind = -1; for ( int i = s; i < e; i++ ) { if ( arr[i] < min ) { min = arr[i]; min_ind = i; } } return min_ind; } void solve( int arr[], int n ){ int i, j, ind; for ( i = 0; i < n; i++ ) { ind = min_index( arr, n, i, n ); if ( arr[i] > arr[ ind ] ) { swap( arr[i], arr[ ind ] ); } } } int main(){ int arr[] = {8, 45, 74, 12, 10, 36, 58, 96, 5, 2, 78, 44, 25, 12, 89, 95, 63, 84}; int n = sizeof( arr ) / sizeof( arr[0] ); cout << "Array before sorting: "; display(arr, n); solve( arr, n ); cout << "\nArray After sorting: "; display(arr, n); }
輸出
Array before sorting: 8, 45, 74, 12, 10, 36, 58, 96, 5, 2, 78, 44, 25, 12, 89, 95, 63, 84, Array After sorting: 2, 5, 8, 10, 12, 12, 25, 36, 44, 45, 58, 63, 74, 78, 84, 89, 95, 96,
結論
一個基本問題是排序,它涉及根據順序排列數字或其他項目 預定的佈局邏輯。該領域還有許多其他可用的排序技術, 但在這篇文章中,我們將重點放在兩個易於使用和理解的。這兩個 排序技術有選擇排序技術和冒泡排序技術。我們有 使用這兩種技術按升序(非降序)排列資料集。 雖然時間效率不是很高,但這兩種排序技術很簡單。兩者的 這兩種技術需要 O(n2) 的時間投入,其中 n 是 輸入。只要判斷是否有變化,後續階段就不會改變 任何階段都沒有交換,可以使冒泡排序更快。
以上是C++程式:將陣列元素升序排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用foreach循環移除PHP數組中重複元素的方法如下:遍歷數組,若元素已存在且當前位置不是第一個出現的位置,則刪除它。舉例而言,若資料庫查詢結果有重複記錄,可使用此方法移除,得到不含重複記錄的結果。

PHP中深度複製數組的方法包括:使用json_decode和json_encode進行JSON編碼和解碼。使用array_map和clone進行深度複製鍵和值的副本。使用serialize和unserialize進行序列化和反序列化。

PHP數組鍵值翻轉方法效能比較顯示:array_flip()函數在大型數組(超過100萬個元素)下比for迴圈效能更優,耗時更短。手動翻轉鍵值的for迴圈方法耗時相對較長。

多維數組排序可分為單列排序和嵌套排序。單列排序可使用array_multisort()函數依列排序;巢狀排序需要遞歸函數遍歷陣列並排序。實戰案例包括按產品名稱排序和按銷售量和價格複合排序。

在PHP中執行陣列深度複製的最佳實踐是:使用json_decode(json_encode($arr))將陣列轉換為JSON字串,然後再轉換回陣列。使用unserialize(serialize($arr))將陣列序列化為字串,然後將其反序列化為新陣列。使用RecursiveIteratorIterator迭代器對多維數組進行遞歸遍歷。

PHP的array_group_by函數可依鍵或閉包函數將陣列中的元素分組,傳回關聯數組,其中鍵為組名,值是屬於該組的元素數組。

PHP的array_group()函數可用來按指定鍵對陣列進行分組,以尋找重複元素。函數透過以下步驟運作:使用key_callback指定分組鍵。可選地使用value_callback確定分組值。對分組元素進行計數並識別重複項。因此,array_group()函數對於尋找和處理重複元素非常有用。

PHP數組合併去重演算法提供了平行的解決方案,將原始陣列分成小塊並行處理,主進程合併區塊的結果去重。演算法步驟:分割原始數組為均等分配的小塊。並行處理每個區塊去重。合併區塊結果並再次去重。
