基本排序算法
/*
排序:只讨论比较排序
只讨论内部排序
稳定性 数值相等的两个数,排序前后相对位置不变
没有一种排序是任何情况下都表现最好的
*/
//冒泡排序:每次筛选出最大值
//时间复杂度不变O(N2)
void Bubble_Sort(ElementType a[],int N)
{
int P;
int i;
for(P = N-1;P >= 0;P--)
for(i=0;i<P;i++)
{
if( A[i]>A[i+1])
swap(A[i],A[i+1]);
}
}
//对基本冒泡排序进行优化
//事件复杂度最好情况O(N)
//最坏情况O(N2)
void Bubble_Sort(ElementType a[],int N)
{
int flag ;
for(int P = N-1;P >= 0;P--)
{
flag = 0;//定义标志位,每一次循环清零
for(int i=0;i<P;i++)
{
if( A[i]>A[i+1])
{
swap(A[i],A[i+1]);
flag = 1;//若该次循环全程存在交换,flag标志位置一
}
}
if(flag == 0) break;//若标志位为零,此次外围for的一次循环全程无交换
}
}