排序名称 | 时间复杂度 | 空间复杂度 | 稳定性 |
---|
冒泡排序 | O(n^2) | O(1) | 稳定 |
快速排序 | O(nlog2n) | O(nlog2n) | 不稳定 |
1. 冒泡排序
void BubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++)
for (int j = 0; j < n - i - 1; j++)
if (arr[j] > arr[j + 1])
std::swap(arr[j], arr[j + 1]);
}
2. 快速排序
template<class T>
void QuickSort(T* arr, const int left, const int right) {
if (left < right) {
int i = left;
int j = right + 1;
do
{
do
{
i++;
} while (arr[i] < arr[left]);
do
{
j--;
} while (arr[j] > arr[left]);
if (i < j)
std::swap(arr[i], arr[j]);
} while (i < j);
std::swap(arr[left], arr[j]);
QuickSort(arr,left,j-1);
QuickSort(arr, j+1, right);
}
}
void main() {
int arr[100];
int n = 10;
srand(int(time(0)));
for (int i = 0; i < n; i++) {
arr[i] = rand() % 1000;
std::cout << arr[i] << " ";
}
std::cout << " " << std::endl;
QuickSort(arr,0,n-1);
for (int i = 0; i < n; i++)
std::cout << arr[i] <<" ";
}