📜  统计-循环排列(1)

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

统计-循环排列

简介

在编程中,统计和循环排列是非常常见的操作。统计可以用于计算一系列数字或数据的总和、平均值、最大/最小值等指标,而循环排列则可以将一系列数据按照一定规则进行排序。

统计
计算数组中数字的总和

以下是一段Python代码,用于计算一个数组中所有数字的总和:

arr = [1, 2, 3, 4, 5]
total = sum(arr)
print(total) # Output: 15

在上述代码中,我们使用了Python内置的sum()函数,它可以用来计算一个迭代器中所有项目的总和。在该代码中,我们将数组作为sum()函数的参数,并将结果存储在变量total中。

计算数组中数字的平均值

以下是一段Python代码,用于计算一个数组中所有数字的平均值:

arr = [1, 2, 3, 4, 5]
mean = sum(arr)/len(arr)
print(mean) # Output: 3.0

在上述代码中,我们首先使用了Python内置的sum()函数计算数组总和,再将其除以数组长度得到平均值,并将结果存储在变量mean中。

找出数组中的最大/最小值

以下是一段Python代码,用于找出一个数组中的最大值:

arr = [1, 2, 3, 4, 5]
max_val = max(arr)
print(max_val) # Output: 5

我们使用了Python内置的max()函数来找出数组中的最大值,其逻辑与sum()函数类似。

同样地,我们可以使用Python内置的min()函数来找出数组中的最小值。

循环排列
冒泡排序

冒泡排序是一种基础的循环排列算法,其核心思想是将相邻的元素两两比较,按照大小关系进行交换,以此达到排序的效果。以下是一段Python代码,用于实现冒泡排序:

def bubbleSort(arr):
    for i in range(len(arr)):
        for j in range(0, len(arr) - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]

arr = [64, 34, 25, 12, 22, 11, 90]
bubbleSort(arr)
print(arr) # Output: [11, 12, 22, 25, 34, 64, 90]

在上述代码中,我们定义了一个名为bubbleSort()的函数,函数接受一个数组参数,并在函数体内使用双重循环实现冒泡排序。外层循环用于控制排序的次数(一般为数组长度),而内层循环则用于实现相邻元素的比较和交换。

快速排序

快速排序也是一种常用的循环排列算法,其可以在最优情况下达到O(nlogn)的时间复杂度。以下是一段Python代码,用于实现快速排序:

def quickSort(arr, low, high):
    if low < high:
        pivot = partition(arr, low, high)
        quickSort(arr, low, pivot - 1)
        quickSort(arr, pivot + 1, high)

def partition(arr, low, high):
    i = (low - 1)
    pivot = arr[high]
    for j in range(low, high):
        if arr[j] <= pivot:
            i = i + 1
            arr[i], arr[j] = arr[j], arr[i]
    arr[i + 1], arr[high] = arr[high], arr[i + 1]
    return (i + 1)

arr = [10, 7, 8, 9, 1, 5]
n = len(arr)
quickSort(arr, 0, n - 1)
print(arr) # Output: [1, 5, 7, 8, 9, 10]

在上述代码中,我们定义了一个名为quickSort()的函数,函数接受一个数组参数和两个整数参数(分别表示数组的最低和最高索引),并在函数体内使用递归和partition()函数实现快速排序。而partition()函数则用于确定基准元素(一般为数组最后一个元素)在排序后的正确位置,并将数组划分为两个部分(小于基准和大于基准的元素分别位于数组的左右两侧)。