冒泡排序

冒泡排序

冒泡排序也被称为起泡排序,该排序算法的原理就是经过一系列的交换实现的,也就是用第一个元素和第二个元素进行比较,如果第一个元素的值大于第二个元素则两者位置互换,否则不交换。然后第二个元素和第三个元素比较.......最后序列中最大的元素被交换到了序列的尾部,这样就完成了一轮交换,经过n轮交换之后,就可以得到一个有序序列。

当然,除了从左向右交换的方案外,另外一种冒泡排序就是重复“从序列右边开始比较相邻两个数字的大小,再根据结果交换两个数字的位置”这一操作的算法,也就是从右往左交换。在这个过程中,数字会像泡泡一样,慢慢从右往左“浮”到序列的顶端,所以这个算法才被称为“冒泡排序”。

// 冒泡排序,指的是元素两两之间进行比较交换,需要比较n轮,每轮需要比较m次,从左向右升序
void BubbleSort(int buf[], int bufsize)

{
    int temp = 0;                     ////为了临时存储交换值
    for (int n = 1; n < bufsize; n++) //.循环比较元素,需要比较n轮
    {
        for (int m = 0; m < bufsize - n; m++) /// 每轮需要比较m次
        {                                     // 数组元素两两之间进行比较交换 buf[0]buf[1]   buf[1] buf[2]
            if (buf[m] > buf[m + 1])
            {
                temp = buf[m];       // 备份前一个
                buf[m] = buf[m + 1]; // 把后面交换到前面
                buf[m + 1] = temp;   // 把前面交换到后面
            }
        }
    }
}

例如 有一个数组 [8] [9] [5] [4] [1]
则需要比较n轮需要比较4轮
[8] [9] [5] [4] [1]
每轮需要比较5-n 轮

posted @ 2024-05-06 19:30  fzhyy  阅读(55)  评论(0)    收藏  举报