zoukankan      html  css  js  c++  java
  • 大爽Python入门练习题 310 猜函数

    大爽Python入门练习题总目录

    第二章 中期练习题 困难 第10题

    题目

    简介

    尽量手动模拟分析(实在不行也可以用电脑运行)

    1. 猜一下下面输出的结果
    2. 猜下以下两个函数的作用(意义)
    3. 尝试分别理解每行代码,尝试分别理解两个函数代码整体的思路。

    函数一

    def mystery1(arr):
        for i in range(len(arr)):
            min_idx = i
            for j in range(i+1, len(arr)):
                if arr[min_idx] > arr[j]:
                    min_idx = j
    
            arr[i], arr[min_idx] = arr[min_idx], arr[i]
    
    
    lst = [7, 4, 6, 9, 5, 2]
    mystery1(lst)
    print(lst)
    

    函数二

    def mystery2(arr):
        for i in range(1, len(arr)):
            key = arr[i]
            j = i-1
            while j >= 0 and key < arr[j] :
                arr[j + 1] = arr[j]
                j -= 1
            arr[j + 1] = key
    
    
    lst = [7, 4, 6, 9, 5, 2]
    mystery2(lst)
    print(lst)
    

    分割线

    本小段没有实际意义,
    仅用于分隔题目和答案。
    防止学生无意中直接看到答案,
    影响思路。



















    答案

    1. 运行结果都是
    [2, 4, 5, 6, 7, 9]
    
    1. 两个函数的作用都是
      arr数组排序(升序)

    2. 代码的思想
      函数一其实就是选择排序(Selection Sort)
      核心思想是每次都选出最小值,放在一端,重复此操作n次。

    函数二其实就是插入排序(Insertion Sort)
    核心思想是从前往后遍历,每次将当前值拿出来,往前,插入到匹配位置。

  • 相关阅读:
    4.3 DDL 数据类型
    Log4j的简要概述
    Eclipse/IDEA使用小技巧
    idea-生成key的Java代码
    Java8新特性--lamada详解
    JQuery基本语法
    EL与Velocity基本语法总结:
    RAF(RandomAccessFile)类
    Java篇-File类之常用操作
    Java篇-File类之创建删除
  • 原文地址:https://www.cnblogs.com/BigShuang/p/15690326.html
Copyright © 2011-2022 走看看