算法学习(1):简单排序算法

选择排序

选择排序的复杂度

时间复杂度O(N^2),额外空间复杂度O(1)。

选择排序的C++代码实现

void selectionSort(vector<int> &arr)
{
    if (arr.size() < 2)
    {
        return;
    }
    for (int i = 0; i < arr.size() - 1; i++)
    {
        int minIndex = i;
        for (int j = i + 1; j < arr.size(); j++)
        {
            if (arr[minIndex] > arr[j])
                minIndex = j;
        }
        swap(arr, i, minIndex); //交换数组arr中下标为i和minIndex的两个数
    }
}
swap函数实现,点击查看
void swap(vector<int> &arr, int i, int j)
{
    int temp;
    temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
    
}

冒泡排序

冒泡排序的复杂度

时间复杂度O(N^2),额外空间复杂度O(1)。

冒泡排序的C++代码实现

void bubbleSort(vector<int> &arr)
{
    if (arr.size() < 2)
    {
        return;
    }
    for (int i = 0; i < arr.size() - 1; i++)
    {
        for (int j = arr.size() - 2; j >= i; j--)
        {
            if (arr[j] > arr[j + 1])
                swap(arr, j, j + 1); //交换数组arr中下标为i和minIndex的两个数,代码同上
        }
    }
}

插入排序

1:13:57

插入排序的复杂度

时间复杂度O(N^2),额外空间复杂度O(1)。

插入排序的C++代码实现

void insertionSort(vector<int>& arr)
{
    if (arr.size() < 2)
    {
        return;
    }
    for (int i = 1; i < arr.size(); i++)
    {
        for (int j = i; j > 0 && arr[j] < arr[j - 1]; j--)
        {
            swap(arr, j, j - 1); //交换数组arr中下标为i和minIndex的两个数,代码同上
        }
    }
}
posted @ 2022-07-18 14:23  小肉包i  阅读(12)  评论(0)    收藏  举报