vector<int> Bubble_sort(vector<int> &arr) {
int _size = arr.size();
for (int i = 0; i < _size; i++) {
for (int j = 0; j < _size; j++) {
if (arr[i] > arr[j]) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
return arr;
}
void quiksort(vector<int>&arr,int begin,int end) {
if(begin >end) return;
int i = begin;
int j = end;
int tmp = arr[begin];
while (i != j) {
while (i<j&&arr[j]>=tmp) j--;
while (i < j&&arr[i] <= tmp) i++;
if (i < j) {
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
arr[begin] = arr[i];
arr[i] = tmp;
quiksort(arr, begin, i-1);
quiksort(arr, i + 1, end);
}
void merge(vector<int>& arr, int low, int mid, int high) {
vector<int> tmp;
int i = low, j = mid + 1, k = 0;
while (i <= mid && j <= high) {
if (arr[i] < arr[j]) {
tmp.push_back(arr[i]);
i++;
}
else {
tmp.push_back(arr[j]);
j++;
}
k++;
}
while (i <=mid) {
tmp.push_back(arr[i]);
i++;
k++;
}
while (j <= high) {
tmp.push_back(arr[j]);
j++;
k++;
}
i = low;
for (int tempK = 0; ((tempK < k) && (i <= high)); tempK++) {
arr[i] = tmp[tempK];
i++;
}
}
void sortArr(vector<int> &arr, int low, int high) {
if (low < high) {
int mid = (high +low) / 2;
sortArr(arr, low, mid);
sortArr(arr, mid + 1, high);
merge(arr, low, mid, high);
}
}
#include<malloc.h>
int main()
{
vector<int> arr = { 3,4,2,1,9,5,8 };
sortArr(arr,0,6);
for (int i = 0; i < arr.size(); i++) {
cout << arr[i] << endl;
}
}
冒泡排序、归并排序、快速排序
于 2022-04-09 19:52:59 首次发布