算法学习(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的两个数,代码同上
}
}
}
浙公网安备 33010602011771号