<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 數組中的`k`個最大(或最小)元素| 添加了最小堆方法 > 原文: [https://www.geeksforgeeks.org/k-largestor-smallest-elements-in-an-array/](https://www.geeksforgeeks.org/k-largestor-smallest-elements-in-an-array/) **問題**:編寫一個有效的程序來打印數組中 k 個最大的元素。 數組中的元素可以按任何順序排列。 例如,如果給定的數組為`[1, 23, 12, 9, 30, 2, 50]`,并且要求您輸入最大的 3 個元素,即`k = 3`,則程序應輸出 50、30 和 23。 **方法 1(使用冒泡`k`次)** 感謝 Shailendra 提出了這種方法。 1)修改[冒泡排序](https://www.geeksforgeeks.org/bubble-sort/),最多可運行`k`次外部循環。 2)打印在步驟 1 中獲得的數組的最后`k`個元素。 時間復雜度:`O(nk)` 像冒泡排序一樣,其他排序算法(例如[選擇排序](http://en.wikipedia.org/wiki/Selection_sort))也可以修改以獲取`k`個最大元素。 **方法 2(使用臨時數組)** 來自`arr[0..n-1]`的`K`個最大元素 1)將前`k`個元素存儲在臨時數組`temp[0..k-1]`中。 2)在`temp[]`中找到最小的元素,讓最小的元素為`min`。 3-a)對于`arr[k]`至`arr[n-1]`中的每個元素`x`(`O(n-k)`), 如果`x`大于最小值,則從`temp[]`中刪除`min`并插入`x`。 3-b)然后,從`temp[]`確定新的`min`(`O(k)`)。 4)打印`temp[]`的最后`k`個元素 時間復雜度:`O((n-k) * k)`。 如果我們要對輸出進行排序,則`O((n-k) * k + klogk)` 感謝 nesamani1822 建議使用此方法。 **方法 3(使用排序)** 1)在`O(nLogn)`中按降序對元素進行排序 2)打印已排序數組`O(k)`的前`k`個數字。 以下是以上的實現。 ## C++ ```cpp // C++ code for k largest elements in an array #include <bits/stdc++.h> using namespace std; void kLargest(int arr[], int n, int k) { ????// Sort the given array arr in reverse ????// order. ????sort(arr, arr + n, greater<int>()); ????// Print the first kth largest elements ????for (int i = 0; i < k; i++) ????????cout << arr[i] << " "; } // driver program int main() { ????int arr[] = { 1, 23, 12, 9, 30, 2, 50 }; ????int n = sizeof(arr) / sizeof(arr[0]); ????int k = 3; ????kLargest(arr, n, k); } // This article is contributed by Chhavi ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看