Swift编程基础之输出数组中最大值与其下标问题

最近做过的两个习题分享给大家!!!

一、给定一个整形数组,将数组中最大数连同下标一起输出

//方法一:
//定义 index 存下标 、 max 存值,循环比较 arr[i] 和max 的值         比max大 的就将其值赋给max,其下标赋给index

 var arr = [1,5,2,3,7,2,10,3,2,4]
 var max = arr[0],index = 0
 for i in 0..<arr.count{
    if arr[i] > Max{
        max = arr[i]
        index = i
    }
}
    print(index,max)
//法二:
//定义一个元祖result(下标,值),存放得到的结果
    var result = (0 , 0)
    for i in 0..<arr.count{
    if arr[i] < arr[i+1]{
    result = (i+1  , arr[i+1])  //将大得存放到元组中
    }
    else{
    let tmp = arr[i+1]
    arr[i+1] = arr[i]
    arr[i] = tmp
    }
 }
    print(result)

二、给定一个整型数组,求该数组中第二大的数的下标

//法一:
//将数组copy给一个新数组,对其排序,获取第二大数的值,再去旧的数组中比对,找到这个值,输出其下标   【ps:其实第一题也可用同样的方法】
#if false
    var arr = [1,5,2,3,7,0,4,9,8,6]
    var arr1 = arr
    for _ in 0...1 {
    for i in 0..<arr1.count - 1{
        if arr1[i] > arr1[i+1]{
            let tmp = arr1[i]
            arr1[i] = arr1[i+1]
            arr1[i+1] = tmp
        }
    }
}
  //  print(arr1)
    //  print(arr1[arr1.count-2])
for i in 0..<arr.count{
    if arr[i] == arr1[arr1.count-2]{
        print("第二个大的数的下标为:\(i)")
    }
}

#endif
 //法二:
 //要得到下标,就不能改变原数组的位置。于是先用之前说的假设法,求出最大值,将其置0,然后再用同样的方法求最大值,最后输出其值与下标。

#if true
var arr = [1,5,2,3,7,0,4,9,8,6]
var Max = arr[0] , index = 0

//这样的方法可以找到最大的值,且数组保持不变
for i in 1..<arr.count{        
    if arr[i] > Max {
        Max = arr[i]
        index = i        
    }
}
arr[index] = 0     //将最大的数置为0
for i in 1..<arr.count{
    if arr[i] > Max {
        Max = arr[i]
        index = i
}
}

    print(index,arr[index])
#endif
//法三:
    //假设第一大 和 第二大
    var max = 0, maxtwo = 0
    //做一次判断,得到假设的第一大值和第二值
    if array[0] < array[1]{
        max = array[1]
        maxtwo = array[0]
    }else{
        max = array[0]
        maxtwo = array[1]
    }
    //遍历数组来寻找maxtwo的最终
    for i in 2...array.count-1{

        if array[i] > max{
            maxtwo = max
            max = array[i]
        }else if array[i] > maxtwo{
            maxtwo = array[i]
        }

    }
    //遍历当前数组寻找下标
    for i in 0...array.count-1{
        if array[i] == maxtwo{
        print("第二大的数:\(maxtwo),下标:\(i)")
        }
     }

再接再厉,继续加油!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值