【Swift-ObjC】冒泡排序

冒泡排序核心思想

算法最讲究的就是算法的思想,只要将算法思想想明白了,就可以通过伪代码来写出算法,那么再使用对应的语言来实现就可以了。

冒泡排序的核心思想就是通过与相邻元素的比较和交换,把小的数交换到最前面。因为这个过程类似于水泡向上升一样,因此被命名为冒泡排序。

时间复杂度
从算法思想可知,冒泡排序需要两个循环来控制遍历,也就是需要n * n趟才能判断、交换完成。

冒泡排序的时间复杂度为O ( n2 )。

Objc版

- (void)bubbleSort:(int [])array len:(size_t)len {
  for (size_t i = 0; i < len - 1; ++i) {
    for (size_t j = len - 1; j > i; --j) {
      if (array[j] < array[j - 1]) {
        // 交换
        int temp = array[j];
        array[j] = array[j - 1];
        array[j - 1] = temp;
      }
    }
  }
}

测试使用

int a[5] = {5,3,8,6,4};
[self bubbleSort:a len:sizeof(a) / sizeof(int)];
for (int i = 0; i < sizeof(a) / sizeof(int); ++i) {
    NSLog(@"%d", a[i]);
}

Swift版

func bubbleSort(var arr: [Int]) ->[Int] {
  // 走多少趟
  for var i = 0; i < arr.count - 1; ++i {

    // 从后往前
    for var j = arr.count - 1; j > i; --j {

      // 后者 < 前者 ? 交换 : 不交换
      if arr[j] < arr[j - 1] {
        let temp = arr[j]

        arr[j] = arr[j - 1]
        arr[j - 1] = temp
      }
    }
  }

  return arr
}

测试使用

// 由于swift中数组也是结构体,是值类型,因此需要接收返回值才能得到排序后的数组
var arr = [5, 3, 8, 6, 4]
arr = bubbleSort(arr)
print(arr)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值