菜鸟笔记
提升您的技术认知

冒泡排序-ag真人游戏

阅读 : 1156

一. 算法描述

冒泡排序:依次比较相邻的数据,将小数据放在前,大数据放在后;即第一趟先比较第1个和第2个数,大数在后,小数在前,再比较第2个数与第3个数,大数在后,小数在前,以此类推则将最大的数"滚动"到最后一个位置;第二趟则将次大的数滚动到倒数第二个位置......第n-1(n为无序数据的个数)趟即能完成排序。

关键问题:排序时要厘清需要进行几轮排序。

为方便理解我还准备了动图:

二. 算法分析

平均时间复杂度:o(n2)

空间复杂度:o(1) (用于交换)

稳定性:稳定

三. 算法实现

//交换data1和data2所指向的整形
void dataswap(int* data1, int* data2)
{
    int temp = *data1;
    *data1 = *data2;
    *data2 = temp;
}
/********************************************************
*函数名称:bubblesort
*参数说明:pdataarray 无序数组;
*          idatanum为无序数据个数
*说明:    冒泡排序
*********************************************************/
void bubblesort(int* pdataarray, int idatanum)
{
    for (int i = 0; i < idatanum - 1; i  )   //走idatanum-1趟
        for (int j = 0; j < idatanum - i - 1; j  )    
            if (pdataarray[j] > pdataarray[j   1])
                dataswap(&pdataarray[j], &pdataarray[j   1]);
}
网站地图