线性查找法

线性查找法

1.概念

对一堆事物进行顺序查找,直到找出目标返回,或遍历后返回空

2.1 例一 在数组中查找Int类型元素

package com.example.datastruct

//一维数组查找

fun main() {
    //定义数组
    val data = arrayOf<Int>(24,28,12,9,16,66,32,4)

    var arrIndex:Int?
    //测试两种结果
    //1.数组中包含查找值
    arrIndex = searchData(12,data)
    exportResult(arrIndex)
    //2.数组中未包含查找值
    arrIndex = searchData(99,data)
    exportResult(arrIndex)
}

//查找数组元素函数
fun searchData(searchNum:Int,data:Array<Int>):Int{
    //遍历数组
    for(i in data){
        if(searchNum == i){
            return data.indexOf(i)
        }
    }
    return -1;
}

//输出查询结果
fun exportResult(arrIndex:Int){
    val message = if(-1 == arrIndex){
        "没有在数组中找到数据"
    }
    else{
        "找到数据,数据在数组中的下标为$arrIndex"
    }
    println(message)
}

2.2 例二 在数组中查找Integer类型数据<使用泛型>

package com.example.datastruct

//一维数组查找

fun main() {
    //定义数组
    val data = arrayOf(24,28,12,9,16,66,32,4)

    var arrIndex:Int?
    //测试两种结果
    //1.数组中包含查找值
    arrIndex = searchData(12,data)
    exportResult(arrIndex)
    //2.数组中未包含查找值
    arrIndex = searchData(99,data)
    exportResult(arrIndex)
}

//查找数组元素函数
fun <T> searchData(searchNum:T,data:Array<T>):Int{
    //遍历数组
    for(i in data){
        if(searchNum == i){
            return data.indexOf(i)
        }
    }
    return -1;
}

//输出查询结果
fun exportResult(arrIndex:Int){
    val message = if(-1 == arrIndex){
        "没有在数组中找到数据"
    }
    else{
        "找到数据,数据在数组中的下标为$arrIndex"
    }
    println(message)
}

2.3 例三 在数组中查找Student类型数据<使用泛型>并重写equals方法

package com.example.datastruct

/*
测试对象数组
* */
fun main() {
    val students = arrayOf(Student(1,"张三",95.2f),Student(2,"王三",97.2f),
        Student(3,"李四",57.2f), Student(4,"王五",57.2f)
    )
    //对象包含情况
    val stu1 = Student(3,"李四",57.2f)
    var arrIndex = searchData(stu1,students)
    exportResult(arrIndex)
    //对象不包含情况
    val stu2 = Student(15,"张三",56.7f)
    arrIndex = searchData(stu2,students)
    exportResult(arrIndex)
}

//判断两个对象是否相同
fun <T> searchData(searchObj:T,data:Array<T>):Int{
    for(obj in data){
       if(searchObj?.equals(obj) == true){
            return data.indexOf(obj)
       }
    }
    return -1
}

//输出查询结果
fun exportResult(arrIndex:Int){
    val message = if(-1 == arrIndex){
        "没有在数组中找到数据"
    }
    else{
        "找到数据,数据在数组中的下标为$arrIndex"
    }
    println(message)
}
package com.example.datastruct

class Student(var id:Int,var name:String,var scroe:Float){
   //重写equals方法时不能传入Student类型
   override fun equals(other: Any?): Boolean {
       return when (other) {
           !is Student -> false
           else -> id == other.id && name == other.name
       }
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值