PTA(每日一题)7-60 变换数组元素

该博客讨论了一种编程问题,涉及对长度为10的数组进行升序排序,然后将前n个元素移到数组末尾的实现方法。提供了两种不同的代码实现,一种是通过直接操作列表,另一种是通过多次反转实现。这些操作对于理解数组操作和排序算法具有一定的实践意义。
摘要由CSDN通过智能技术生成

变换的内容如下:
(1)将长度为10的数组中的元素按升序进行排序;
(2)将数组的前n个元素换到数组的最后面。

输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每行测试数据输入1个正整数n(0 < n < 10),然后输入10个整数。

输出格式:
对于每组测试数据,输出变换后的全部数组元素。元素之间以一个空格分隔(最后一个数据之后没有空格)。

输入样例:

1
2 34 37 98 23 24 45 76 89 34 68

输出样例:

34 34 37 45 68 76 89 98 23 24

代码:

def print_list(lst):
    for i in range(len(lst)):
        if i != len(lst) - 1:
            print(lst[i], end=' ')
        else:
            print(lst[i])

# 推荐第一种方法
# t = int(input())  
# for i in range(t):
#     n, *lst = map(int, input().split())
#     lst.sort()
#     lstA = lst[0:n]
#     lstB = lst[n:]
#     lst = lstB + lstA
#     print_list(lst)

#  方法二,前n个数逆序,后面的数逆序,整体逆序
#  由于切片逆序是返回一个新的列表,所以不用切片
#  下面的写法,完全没有python的灵魂
def reverse_list(lst, index, legth):
    start = index
    end = index + legth - 1
    while start < end:
        lst[start], lst[end] = lst[end], lst[start]
        start += 1
        end -= 1


t = int(input())
for i in range(t):
    n, *lst = map(int, input().split())
    lst.sort()
    reverse_list(lst, 0, n)
    reverse_list(lst, n, len(lst) - n)
    reverse_list(lst, 0, len(lst))
    print_list(lst)

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
一维数在生活中有许多应用。下面列举一些例子: 1. 学生成绩管理 在学生成绩管理系统中,可以使用一维数来存储学生的各科成绩,方便查询和计算平均分等操作。 2. 库存管理 在库存管理系统中,可以使用一维数来存储商品的名称、数量、价格等信息,方便进行进货、销售和库存统计等操作。 3. 电话簿 在电话簿中,可以使用一维数来存储联系人的姓名、电话号码等信息,方便进行查找和管理。 4. 游戏排行榜 在游戏中,可以使用一维数来存储玩家的得分、等级等信息,方便进行排名和比较。 5. 购物清单 在购物清单中,可以使用一维数来存储要购买的商品名称、数量、价格等信息,方便进行结算和管理。 下面是一个简单的Java程序,演示了如何使用一维数进行学生成绩管理: ``` import java.util.Scanner; public class ScoreManagement { public static void main(String[] args) { Scanner input = new Scanner(System.in); int n; System.out.print("请输入学生人数:"); n = input.nextInt(); int[] score = new int[n]; for (int i = 0; i < n; i++) { System.out.print("请输入第" + (i+1) + "个学生的成绩:"); score[i] = input.nextInt(); } int sum = 0; for (int i = 0; i < n; i++) { sum += score[i]; } double average = sum / (double)n; System.out.println("平均分为:" + average); } } ``` 在上面的程序中,首先通过输入学生人数来创建一个对应长度的一维数 `score`,然后通过循环输入每个学生的成绩。最后计算所有学生的平均分并输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱写bug的小邓程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值