C 中的排序函數是用來對陣列或容器中的元素進行排序的功能函數。排序可以依升序或降序排列,可以對整型、浮點型、字元型等各種類型的資料進行排序。 C 語言提供了多個排序函數,本文將對這些排序函數的使用方法和特點進行詳細介紹。
sort() 函數是C STL 中最常用的排序函數之一,其功能是對陣列或容器中的元素進行排列。 sort() 函數的基本用法如下:
sort(begin, end);
其中,begin 是陣列或容器中第一個元素的位址,end 是最後一個元素的位址1,因此end 指向最後一個元素後面的空位址。 sort() 函數預設按升序排序,如果需要按降序排序,則可以傳入一個函數指標或 lambda 表達式作為第三個參數。
下面是一個範例程式碼,示範如何使用sort() 函數對整數陣列進行排序:
#include <iostream> #include <algorithm> using namespace std; int main() { int arr[] = {5, 2, 9, 1, 4, 3, 8, 6, 7}; int n = sizeof(arr) / sizeof(arr[0]); sort(arr, arr + n); for (int i = 0; i < n; i++) { cout << arr[i] << " "; } return 0; }
執行上述程式碼結果如下:
1 2 3 4 5 6 7 8 9
#include <iostream> #include <algorithm> using namespace std; int main() { int arr[] = {5, 2, 9, 1, 4, 3, 8, 6, 7}; int n = sizeof(arr) / sizeof(arr[0]); stable_sort(arr, arr + n); for (int i = 0; i < n; i++) { cout << arr[i] << " "; } return 0; }
1 2 3 4 5 6 7 8 9
partial_sort(begin, middle, end);
#include <iostream> #include <algorithm> using namespace std; int main() { int arr[] = {5, 2, 9, 1, 4, 3, 8, 6, 7}; int n = sizeof(arr) / sizeof(arr[0]); int k = 3; partial_sort(arr, arr + k, arr + n); for (int i = 0; i < k; i++) { cout << arr[i] << " "; } return 0; }
1 2 3
nth_element(begin, middle, end);
#include <iostream> #include <algorithm> using namespace std; int main() { int arr[] = {5, 2, 9, 1, 4, 3, 8, 6, 7}; int n = sizeof(arr) / sizeof(arr[0]); int k = 3; nth_element(arr, arr + k - 1, arr + n); cout << "第 " << k << " 小的数是:" << arr[k - 1] << endl; return 0; }
第 3 小的数是:3
make_heap(begin, end);
#include <iostream> #include <algorithm> using namespace std; int main() { int arr[] = {5, 2, 9, 1, 4, 3, 8, 6, 7}; int n = sizeof(arr) / sizeof(arr[0]); make_heap(arr, arr + n); for (int i = 0; i < n; i++) { cout << arr[i] << " "; } return 0; }
9 7 8 6 4 3 5 1 2
push_heap(begin, end);
#include <iostream> #include <algorithm> using namespace std; int main() { int arr[] = {5, 2, 9, 1, 4, 3, 8, 6, 7}; int n = sizeof(arr) / sizeof(arr[0]); make_heap(arr, arr + n); arr[n] = 0; push_heap(arr, arr + n + 1); for (int i = 0; i < n + 1; i++) { cout << arr[i] << " "; } return 0; }
9 7 8 6 4 3 5 1 2 0
#pop_heap() 函數
pop_heap() 函數用於將堆頂元素彈出,並重新調整堆的結構,以滿足堆的性質。使用方法如下:###pop_heap(begin, end);
#include <iostream> #include <algorithm> using namespace std; int main() { int arr[] = {5, 2, 9, 1, 4, 3, 8, 6, 7}; int n = sizeof(arr) / sizeof(arr[0]); make_heap(arr, arr + n); pop_heap(arr, arr + n); n--; for (int i = 0; i < n; i++) { cout << arr[i] << " "; } return 0; }
8 7 5 6 4 3 2 1
sort_heap(begin, end);
#include <iostream> #include <algorithm> using namespace std; int main() { int arr[] = {5, 2, 9, 1, 4, 3, 8, 6, 7}; int n = sizeof(arr) / sizeof(arr[0]); make_heap(arr, arr + n); sort_heap(arr, arr + n); for (int i = 0; i < n; i++) { cout << arr[i] << " "; } return 0; }
1 2 3 4 5 6 7 8 9
以上是C++中的排序函數詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!