首页 > 编程语言 > 详细

7大排序算法之——冒泡排序优化

时间:2019-08-07 21:17:27      阅读:108      评论:0      收藏:0      [点我收藏+]

冒泡排序优化算法思想:我们通过在程序定义了一个bool类型的flag变量,用来判断往后的循环当中,数组是否已经是有序的,每一轮循环都会设置其值为true,当有元素对调位置时,就将flag的值设置为true,表示该数组还不是有序数组。每一轮都要判断flag的值,如果判断当前一轮操作没有元素有位置调换,那么可以提前结束所有的循环。

void bubble_sort(int* a,int sz)
{
    int i, j;
    if (a == NULL)
        return;
    int temp = 0;
    int flag = true;  //用来标记是否存在数据位置的转换
    for (i = 1; i < sz&&flag; ++i)  //控制循环比较的次数
    {
        flag = false;
        for (j = sz - 1; j >= i; --j)  
        {
            if (a[j] < a[j - 1])
            {
                temp = a[j];
                a[j] = a[j - 1];
                a[j - 1] = temp;
                flag = true;
            }
        }
    }
}

int main()
{
    int arr[] = { 4, 6, 5, 8, 9, 3, 2, 1, 7 };
    int size = sizeof(arr) / sizeof(int);
    bubble_sort(arr, size);
    for (int i = 0; i < size; i++)
    {
        cout << arr[i] << " ";
    }
    cout << endl;
    return 0;
}

 

7大排序算法之——冒泡排序优化

原文:https://www.cnblogs.com/single-dont/p/11317553.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!