冒泡排序
/*
冒泡排序是一种流行但低效的算法,
它的作用是反复交换相邻的未按次序排列的元素
*/
#include <stdio.h>
void Exchange(int &a,int &b)
{
// 使用位运算,秀一秀自己的实力
a = a^b;
b = a^b;
a = a^b;
}
void BubbleSort(int a[],int len)
{
// 为了保证代码的鲁棒性,我们首先对异常值验证
if(a == NULL || len <= 0)
return;
// 冒泡排序核心代码
for(int i = 0; i < len; i++)
{
for(int j = len-1; j > i; j--)
{
if(a[j] < a[j-1])
exchange(a[j],a[j-1]);
}
}
}
时间复杂度O(n²),空间复杂度O(1)
选择排序
/*
简单选择排序
每次经过 n-i 次比较,从序列中选出i之后的最小元素放在第 i 个位置
*/
void SelectSort(int a[],int len)
{
// 为了保证代码的鲁棒性,我们首先对异常值验证
if(a == NULL || len <= 0)
return;
// 选择排序核心代码
for(int i = 0; i < len; i++)
{
int min_index = i;
for(i