介绍
实现了冒泡排序、插入排序及其几种优化、选择排序、希尔排序、快速排序、归并排序。
代码实现
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<algorithm>
#include<map>
#include<set>
#include<list>
#include<queue>
#include<stack>
#include<vector>
using namespace std;
#define fori(i,a,b) for(int i=(a);i<(b);i++)
#define ford(i,a,b) for(int i=(a)-1;i>=(b);i--)
#define mem(a,b) memset((a),(b),sizeof(a));
#define all(x) (x).begin(),(x).end()
template<class T, class T2>bool ckmax(T& a, T2 b) {
return a < b ? a = b, 1 : 0; }
template<class T, class T2>bool ckmin(T& a, T2 b) {
return a > b ? a = b, 1 : 0; }
typedef long long ll;
const int maxn = 2e5 + 8;
void _swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 冒泡排序
void bubble_sort(int* _begin, int* _end) {
for (int* p = _begin; p != _end; p++)
for (int* p2 = p+1; p2 != _end; p2++)
if (*p2 < *p) _swap(p, p2);
}
// 插入排序
void insertion_sort(int* _begin, int* _end) {
for (int* p = _begin + 1; p < _end; p++)
for (int* p2 = p; p2 > _begin; p2--)
if (*(p2 - 1) > * p2) _swap(p2 - 1, p2);
else break;
}
// 折半插入排序
void binary_insertion_sort(int* _begin, int* _end) {