按参赛学校查询参赛团队

问题描述和要求

【问题描述】能够提供按参赛学校查询参赛团队,根据提示输入参赛学校名称,若查找成功,输出该学校参赛的所有团队的基本信息,输出的参赛团队需有序输出(按参赛队编号)。(排序算法可从选择排序、插入排序、希尔排序、归并排序、堆排序中任意选择,并为选择算法的原因做出说明。)

【基本要求】界面要求:交互设计要合理,每个功能可以设计菜单,用户根据提示,完成相关功能的要求。

本部分主要是针对赛事管理系统中查询队伍模块的说明,基本的内容在赛事管理部分,这里直接对查询队伍模块进行详细说明。

getindex方法

public static ArrayList<Team> getIndex2(ArrayList<Team> list, String school) {

    ArrayList<Team> res = new ArrayList<Team>();

    //遍历集合

    for (int i = 0; i < list.size(); i++) {

        //得到每一个队伍对象

        Team tem = list.get(i);

        //得到每一个队伍对象的学校

        String tschool = tem.getSchool();

        //拿着集合中队伍的学校和需要查询的学校进行比较,若一样返回索引

        if (tschool.equals(school)) {

            res.add(tem);

        }

    }

    //循环结束后未找到,说明不存在

    return res;//进行排序操作

  选择排序

选择排序是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,继续放在起始位置知道未排序元素个数为0。

代码如下:

public static void teamSelectSort(ArrayList<Team> list) {

    // 使用选择排序按照 id 升序排序

    // 总共要经过 N-1 轮比较

    for (int i = 0; i < list.size() - 1; i++) {

        int minIndex = i;

        // 每轮需要比较的次数 N-i

        for (int j = i + 1; j < list.size(); j++) {

            if (list.get(j).getId().compareTo(list.get(minIndex).getId()) < 0) {

                minIndex = j;// 记录目前能找到的最小值元素的下标

            }

        }

        // 交换位置

        Team temp = list.get(i);

        list.set(i, list.get(minIndex));

        list.set(minIndex, temp);

    }

第一次内循环比较N - 1次,然后是N-2次,N-3次,……,最后一次内循环比较1次。

共比较的次数是 (N - 1) + (N - 2) + ... + 1,求等差数列和,得 (N - 1 + 1)* N / 2 = N^2 / 2。舍去最高项系数,其时间复杂度为 O(N^2)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值