1.时间复杂度为O(n^2)的排序
选择排序
时间复杂度:O(n^2)
空间复杂度: O(1)
不稳定
// 简单选择排序,时间复杂度O(n^2),不稳定
void SelectSort(int arr[],int n)
{
for (int i = 0; i < n; i++)
{
int min = arr[i];
int minIndex = i;
for (int j = i + 1; j < n; j++)
{
if (arr[j] < min)
{
min = arr[j];
minIndex = j;
}
}
if (minIndex != i)
{
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
冒泡排序
时间复杂度:O(n^2)
空间复杂度:O(1)
稳定
//冒泡排序,时间复杂度O(n^2),稳定
void BubbleSort(int arr[], int n)
{
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (arr[i] > arr[j])
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
插入排序
时间复杂度: 最坏为O(n^2),如果数组都有序就不用插入了,最好为O(n)
空间复杂度O(1)
稳定
//插入排序,时间复杂度O(n^2),稳定
void InsertSort(int arr[], int n)
{
for (int i = 1; i < n; i++)
{
int ivalue = arr[i];
bool isInsert = false;
for (int j = i - 1; j >= 0; j--)
{
if (arr[j]>ivalue)
arr[j + 1] = arr[j];
else
{
arr[j + 1] = ivalue;
isInsert = true;
br

本文详细对比了选择排序、冒泡排序、插入排序、堆排序、快速排序和归并排序,以及桶排序的复杂度、稳定性,揭示了它们在O(n^2)和O(nlogn)复杂度下的特点,以及特殊情况下如何影响效率。
最低0.47元/天 解锁文章
1646

被折叠的 条评论
为什么被折叠?



