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

来源:互联网 发布:微商城怎么查询数据库 编辑:程序博客网 时间:2024/05/16 12:06

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

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

//方法一://定义 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 truevar 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     //将最大的数置为0for 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 0