冒泡排序
#include <iostream>
#include <vector>
using namespace std;
void mysort(vector<int>& da) {
int n = da.size();
for (int i=0; i<n; ++i) {
for (int j=0; j<n-i-1; ++j) {
if (da[j]>da[j+1]) swap(da[j], da[j+1]);
}
}
}
int main()
{
vector<int> nums{9,8,7,4,5,6,2,1,3};
mysort(nums);
for (int i:nums) cout<<i<<' ';
cout<<endl;
return 0;
}
快速排序
#include <iostream>
#include <vector>
using namespace std;
void mysort(vector<int>& da, int s, int e) {
if (s>=e) return ;
int i=s, j=e, tmp=da[s];
while(i<j) {
while (i<j && da[j]>=tmp) j--;
while (i<j && da[i]<=tmp) i++;
swap(da[i], da[j]);
}
swap(da[s], da[i]);
mysort(da, s, i-1);
mysort(da, i+1, e);
}
int main()
{
vector<int> nums{9,8,7,4,5,6,2,1,3};
mysort(nums, 0, nums.size()-1);
for (int i:nums) cout<<i<<' ';
cout<<endl;
return 0;
}
归并排序
#include <iostream>
#include <vector>
using namespace std;
void mysort(vector<int>& da, int s, int e) {
if (s>=e) return ;
int mid = s+((e-s)>>2);
mysort(da, s, mid);
mysort(da, mid+1, e);
vector<int> tmp;
int i=s, j=mid+1;
while(i<=mid && j<=e) {
if (da[i]<=da[j]) tmp.push_back(da[i++]);
else tmp.push_back(da[j++]);
}
for(; i<=mid; ++i) tmp.push_back(da[i]);
for(; j<=e; ++j) tmp.push_back(da[j]);
for (int k=s; k<=e; ++k) da[k]=tmp[k-s];
}
int main()
{
vector<int> nums{9,8,7,4,5,6,2,1,3};
mysort(nums, 0, nums.size()-1);
for (int i:nums) cout<<i<<' ';
cout<<endl;
return 0;
}