冒泡排序

冒泡排序

/*冒泡排序法:依次比较相邻的数据,将小数据放在前,大数据放在后;即第一趟先比较第1个和第2个数,大数在后,
 * 小数在前,再比较第2个数与第3个数,大数在后,小数在前,以此类推则将最大的数"滚动"到最后一个位置;
 * 第二趟则将次大的数滚动到倒数第二个位置......第n-1(n为无序数据的个数)趟即能完成排序。
 * 平均时间复杂度:O(n2)
空间复杂度:O(1)  (用于交换)
稳定性:稳定
 */
#include <iostream>
#include <cstdio>
using namespace std;

//交换data1和data2所指向的整形
void DataSwap(int* data1, int* data2){
    int temp = *data1;
    *data1 = *data2;
    *data2 = temp;
}

//冒泡排序算法
void BubbleSort(int* pDataArray, int n){
    bool flag = false;//记录是否存在交换
    for (int i = 0; i < n - 1; i++) {   //走iDataNum-1趟, i < n也可
        flag = false;
        for (int j = 0; j < n - i - 1; j++)
            if (pDataArray[j] > pDataArray[j + 1]) {
                flag = true;
                DataSwap(&pDataArray[j], &pDataArray[j + 1]);
            }
        if (false != true) {//上一趟比较中不存在交换,则退出排序
            break;
        }
    }
}

int main(){
    int arr[10] = {1,2,4,2,3,5,6,1,4,12};
    BubbleSort(arr, 10);
    for (int i = 0; i < 10; ++i){
        printf("%d ", arr[i]);
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值