📌  相关文章
📜  按原始顺序打印给定数组中的 n 个最小元素(1)

📅  最后修改于: 2023-12-03 15:39:48.369000             🧑  作者: Mango

按原始顺序打印给定数组中的 n 个最小元素

在编写程序时,我们有时需要找到数组中的最小元素。但是,如果我们只需要找到最小的n个元素,那么如何以原始顺序打印它们呢?本文将介绍如何使用Python语言实现这个问题的解决方案。

解决方案

我们可以使用以下三种方法来解决这个问题:

  1. 使用sorted()函数
  2. 使用heapq.nsmallest()函数
  3. 使用选择排序算法
使用sorted()函数

我们可以使用sorted()函数来对数组进行排序,并取出前n个最小元素。然后我们可以从原始数组中找到这些元素的位置,并按顺序打印它们。以下是Python代码的示例:

def print_n_smallest(arr, n):
    sorted_array = sorted(arr[:n])
    for i in arr:
        if i in sorted_array:
            print(i)

在上面的代码中,我们使用sorted()函数对原始数组的前n个元素进行排序,并将它们存储在sorted_array变量中。然后我们遍历原始数组,并在sorted_array中查找元素。如果找到了元素,则将其打印出来。

使用heapq.nsmallest()函数

我们还可以使用heapq.nsmallest()函数来找到数组中的n个最小元素。该函数基于堆排序算法实现。以下是Python代码的示例:

import heapq

def print_n_smallest(arr, n):
    smallest = heapq.nsmallest(n, arr)
    for i in arr:
        if i in smallest:
            print(i)

在上面的代码中,我们使用heapq.nsmallest()函数来找到数组中的n个最小元素,并将它们存储在smallest变量中。然后我们遍历原始数组,并在smallest中查找元素。如果找到了元素,则将其打印出来。

使用选择排序算法

我们还可以使用选择排序算法来找到数组中的n个最小元素。以下是Python代码的示例:

def print_n_smallest(arr, n):
    for i in range(n):
        min_index = i
        for j in range(i+1, len(arr)):
            if arr[j] < arr[min_index]:
                min_index = j
        arr[i], arr[min_index] = arr[min_index], arr[i]
    for i in range(n):
        print(arr[i])

在上面的代码中,我们使用选择排序算法来排序数组,并打印出前n个元素。排序后,打印出的元素将按照它们在原始数组中的顺序排列。

结论

在本文中,我们学习了三种方法来找到数组中的最小元素,并以原始顺序打印出前n个元素。具体来说,我们使用了sorted()函数、heapq.nsmallest()函数和选择排序算法。选择哪种方法取决于您的具体需求。希望您能从本文中学到有用的知识。