typedef int ELemType;
// 冒泡排序
void bubbleSort(ELemType arr[], int len)
{
int i, j, temp;
for (i = 1; i < len; i++)
{
for (j = 0; j < len - i; j++)
{
if (arr[j] > arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 插入排序
void insertSort(ELemType arr[], int len)
{
int i, j, temp;
for (i = 1; i < len; i++)
{
temp = arr[i];
for (j = i - 1; j >= 0 && arr[j] > temp; j--)
arr[j + 1] = arr[j];
arr[j + 1] = temp;
}
}
// 选择排序
void selectSort(ELemType arr[], int len)
{
int i, j, temp;
for (i = 0; i < len; i++)
{
for (j = i + 1; j < len; j++)
{
if (arr[i] > arr[j])
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
// 归并排序
void mergeSort(ELemType arr[], int start, int end, int temp[])
{
if (start >= end) return;
int mid = (start + end) / 2;
int i = start, j = mid + 1;
int index = 0;
mergeSort(arr, start, mid, temp);
mergeSort(arr, mid + 1, end, temp);
while (i <= mid && j <= end)
{
if (arr[i] >= arr[j])
{
temp[index] = arr[j];
j++;
}
else
{
temp[index] = arr[i];
i++;
}
index++;
}
while (i <= mid)
{
temp[index] = arr[i];
i++;
index++;
}
while (j <= end)
{
temp[index] = arr[j];
j++;
index++;
}
for (i = start, j = 0; i <= end; i++, j++)
arr[i] = temp[j];
}
// 快速排序
void quicklySort(ELemType arr[], int start, int end)
{
int base = arr[(start + end) / 2];
int i = start, j = end, temp;
if (start >= end) return;
while (i <= j)
{
while (base > arr[i]) i++;
while (base < arr[j]) j--;
if (i <= j)
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
quicklySort(arr, start, j);
quicklySort(arr, i, end);
}