Algorithm-Renewed

This commit is contained in:
e2hang
2025-09-13 22:37:17 +08:00
parent 265b8af720
commit 7b6acef275
14 changed files with 778 additions and 1 deletions

View File

@@ -0,0 +1,54 @@
#include <iostream>
#include <vector>
using namespace std;
void mergeSort(vector<int>& path, int start, int end){
if(start >= end) return;
int mid = (end + start) / 2;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD><DDB9>ֽ<EFBFBD>
mergeSort(path, start, mid);
mergeSort(path, mid + 1, end);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
vector<int> temp;
int i = start, j = mid + 1;
while(i <= mid && j <= end){
if(path[i] >= path[j]){
temp.push_back(path[j]);
j++;
}
else{
temp.push_back(path[i]);
i++;
}
}
while(i <= mid) temp.push_back(path[i++]);
while(j <= end) temp.push_back(path[j++]);
//ֱ<>Ӱѵ<D3B0><D1B5><EFBFBD><EFBFBD>õĿ<C3B5><C4BF><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD>
for(int x = 0; x < temp.size(); x++){
path[start + x] = temp[x];
}
}
int main(){
vector<int> arr;
int n;
cin >> n;
arr.resize(n);
for(int i = 0; i < n; i++){
cin >> arr[i];
}
mergeSort(arr, 0, arr.size() - 1);
for(int i = 0; i < arr.size(); i++){
if(i) cout << " ";
cout << arr[i];
}
cout << endl;
return 0;
}