目录

 

​冒泡排序算法原理​

​冒泡排序算法的使用场景​

​冒泡排序算法的实现​

​冒泡排序算法的运行结果​


冒泡排序算法原理

冒泡排序就是重复“从序列右边开始比较相邻两个数字的大小,再根据结果交换两个数字的位置”这一操作的算法。在这个过程中,数字会像泡泡一样,慢慢从右往左“浮”到序列的顶端,所以这个算法才被称为“冒泡排序”。在冒泡排序中,第1轮需要比较n-1次,第2轮需要比较n-2次……第n-1轮需要比较1次。因此,总的比较次数为(n-1)+(n-2)+…+1≈n2/2。这个比较次数恒定为该数值,和输入数据的排列顺序无关。不过,交换数字的次数和输入数据的排列顺序有关。假设出现某种极端情况,如输入数据正好以从小到大的顺序排列,那么便不需要任何交换操作;反过来,输入数据要是以从大到小的顺序排列,那么每次比较数字后便都要进行交换。因此,冒泡排序的时间复杂度为O(n2)

冒泡排序算法的使用场景

 

冒泡排序算法的实现

//描述:冒泡排序算法
//参数:@piArray 待排序的数组数据
// @iNum 数组个数
//返回:无
void BubbleSort(int *piArray, int iNum)
{
int i, j, tmp;
char info[128];

Printf("Sort before:", piArray, iNum);
printf("\n\n");
for (i=0; i<iNum-1; i++)
{
for (j=0; j<iNum-1-i; j++)
{
if (piArray[j] < piArray[j+1])
{
tmp = piArray[j];
piArray[j] = piArray[j+1];
piArray[j+1] = tmp;
}
}
memset(info, 0, sizeof(info));
sprintf(info, "\nOrder number %02d:", i);
Printf(info, piArray, iNum);
}
printf("\n\n");
Printf("Sort after:", piArray, iNum);
}

int main(int argc, char *argv[])
{
int iArray[] ={10, 23, 65, -101, 999, 10000};

BubbleSort(iArray, sizeof(iArray)/sizeof(iArray[0]));

system("pause");
return 0;
}

冒泡排序算法的运行结果

冒泡排序算法(2)_冒泡排序

标题