#include<iostream>
#include<algorithm>
using namespace std;
//快排(最好结果是nlogn,最坏情况是n*n)
void QuickSort(int arr[], int L, int R)
{
int pivot = arr[(L + R) / 2];
int i = L;
int j = R;
while (i <= j)
{
while (arr[i] < pivot)
{
i++;
}
while (arr[j] > pivot)
{
j--;
}
if (i <= j)
{
swap(arr[i], arr[j]);
i++;
j--;
}
}
if (i < R)
{
QuickSort(arr, i, R);
}
if (j > L)
{
QuickSort(arr, L, j);
}
}
//插入排序(最好结果是n,最坏情况是n*n)
void InsertSort(int arr[],int len)
{
for (int i = 1; i < len; i++)
{
int key = arr[i];
while (arr[i - 1] > key)
{
arr[i] = arr[i - 1];
i--;
if (i == 0)
{
break;
}
}
arr[i] = key;
}
}
//选择排序(最好结果是n*n,最坏情况是n*n)
void SelectSort(int arr[], int len)
{
for (int i = len; i>=1; i--)
{
int max = arr[0];
int pos = 0;
for (int j = 0; j < i; j++)
{
if (arr[j] >= max)
{
max = arr[j];
pos = j;
}
}
swap(arr[pos], arr[i-1]);
}
}
//冒泡排序(最好结果是n,最坏情况是n*n)
void BubbleSort(int arr[], int len)
{
for (int i = 0; i < len; i++)
{
for (int j = 1; j < len; j++)
{
if (arr[j - 1] > arr[j])
{
swap(arr[j - 1], arr[j]);
}
}
}
}
int main()
{
int arr[9] = { 5,2,9,10,3,0,4,1,100 };
QuickSort(arr, 0, 8);
InsertSort(arr, 9);
SelectSort(arr, 9);
BubbleSort(arr, 9);
for (auto c : arr)
{
cout << c << " ";
}
cout << endl;
return 0;
}