在Linux環境下使用C++實現高效的排序算法,可以結合標準庫中的std::sort函數,這是一個高度優化的快速排序算法。以下是一個示例代碼,展示了如何在C++中使用std::sort進行排序:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {5, 2, 9, 1, 5, 6};
// 使用std::sort進行排序
std::sort(vec.begin(), vec.end());
// 輸出排序后的結果
for (int num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
包含頭文件:
#include <iostream>:用于輸入輸出操作。#include <vector>:用于使用std::vector容器。#include <algorithm>:包含std::sort函數。創建向量:
std::vector<int> vec = {5, 2, 9, 1, 5, 6};:創建一個整數向量并初始化。排序:
std::sort(vec.begin(), vec.end());:使用std::sort對向量進行排序。vec.begin()和vec.end()分別表示向量的起始和結束迭代器。輸出結果:
如果你需要實現其他排序算法,例如歸并排序、堆排序或插入排序,可以參考以下示例:
#include <iostream>
#include <vector>
void merge(std::vector<int>& vec, int left, int mid, int right) {
std::vector<int> temp(right - left + 1);
int i = left, j = mid + 1, k = 0;
while (i <= mid && j <= right) {
if (vec[i] <= vec[j]) {
temp[k++] = vec[i++];
} else {
temp[k++] = vec[j++];
}
}
while (i <= mid) {
temp[k++] = vec[i++];
}
while (j <= right) {
temp[k++] = vec[j++];
}
for (i = left, k = 0; i <= right; ++i, ++k) {
vec[i] = temp[k];
}
}
void mergeSort(std::vector<int>& vec, int left, int right) {
if (left < right) {
int mid = left + (right - left) / 2;
mergeSort(vec, left, mid);
mergeSort(vec, mid + 1, right);
merge(vec, left, mid, right);
}
}
int main() {
std::vector<int> vec = {5, 2, 9, 1, 5, 6};
mergeSort(vec, 0, vec.size() - 1);
for (int num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
#include <iostream>
#include <vector>
void heapify(std::vector<int>& vec, int n, int i) {
int largest = i;
int left = 2 * i + 1;
int right = 2 * i + 2;
if (left < n && vec[left] > vec[largest]) {
largest = left;
}
if (right < n && vec[right] > vec[largest]) {
largest = right;
}
if (largest != i) {
std::swap(vec[i], vec[largest]);
heapify(vec, n, largest);
}
}
void heapSort(std::vector<int>& vec) {
int n = vec.size();
for (int i = n / 2 - 1; i >= 0; --i) {
heapify(vec, n, i);
}
for (int i = n - 1; i > 0; --i) {
std::swap(vec[0], vec[i]);
heapify(vec, i, 0);
}
}
int main() {
std::vector<int> vec = {5, 2, 9, 1, 5, 6};
heapSort(vec);
for (int num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
這些示例展示了如何在C++中實現基本的排序算法。根據具體需求選擇合適的排序算法,并考慮使用標準庫中的std::sort以獲得最佳性能。