/*o(n^2) time efficiency*/
//冒泡排序 o(n^2) o(1) stable
//冒泡排序 o(n^2) o(1) stable
void Bubbing(int a[],int n)//数组的a[0] 不保存元素
{
int k = 1,t = 0,i = 0;
while(k == 1 && i < n)
{
k = 0;//初始化
for(int j = 1;j < n - i;j ++)
{
if(a[j] < a[j + 1])
{
k = 1;
//swap
t = a[j];a[j] = a[j + 1];a[j + 1] = t;
}
}
i ++;
//如果到这k仍为0,说明冒泡没有发生交换,排序结束
}
return;
}
//选择排序 o(n^2) o(1) instable
//选择排序 o(n^2) o(1) instable
void Select(int a[],int n)//数组的a[0] 不保存元素
{
int k = 0,i = 1,x,t;
while(i < n)
{
k = i;
for(int j = i;j < n;j ++)
{
if(a[j] < a[k])
{
k = j;
}
}
if(k != i)//存在比i下标所指 小的元素,且k保存的是该元素的下标
{
//swap
t = a[k];a[k] = a[i];a[i] = t;
}
i = i + 1;//找到一个元素
}
return;
}
//插入排序 o(n^2) o(1) stable
//插入排序 o(n^2) o(1) stable
void Insert(int a[],int n)//数组的a[0] 不保存元素
{
int t = 0,j = 0;
for(int i = 2;i < n;i ++)
{
a[0] = a[i];
j = i - 1
//寻找a[i] 插入点
while(a[j] > a[0])//当a[j] < a[0]时 或者 a[j] = a[0]时(此时j=0)退出
{
a[j + 1] = a[j];//往后移
j --;
}
a[j + 1] = a[0];//插入点 放入插入值
}
return;
}