当前位置:首页 > 编程技术 > 正文内容

使用 Python 对波形中的数组进行排序

yc8881年前 (2023-02-21)编程技术316

使用 Python 对波形中的数组进行排序

在本文中,我们将学习一个 python 程序来对波形中的数组进行排序。

假设我们采用了一个未排序的输入数组。我们现在将对波形中的输入数组进行排序。数组 'arr[0..n-1]' 以波形排序,如果 arr[0] >= arr[1] <= arr[2] >= arr[3] <= arr[4] >= .....

使用的方法

以下是用于完成此任务的各种方法&miinus;

  • 使用内置的 sort() 函数

  • 不使用内置函数

方法 1:使用内置的 sort() 函数

算法(步骤)

以下是执行所需任务要遵循的算法/步骤。−

  • 创建一个函数,通过接受输入数组和数组长度作为参数来对波形中的数组进行排序。

  • 使用 sort() 函数(按升序/降序对列表进行排序按升序对输入数组进行排序。

  • 使用 for 循环遍历直到数组长度(步骤=2)

  • 使用“,”运算符交换相邻元素,即当前元素及其下一个元素。

  • 创建一个变量来存储输入数组。

  • 使用 len() 函数(返回对象中的项数获取输入数组的长度。

  • 通过传递输入数组和数组长度作为参数来调用上面定义的 sortingInWaveform() 函数

  • 使用 for 循环遍历数组的所有元素

  • 打印数组的当前元素。

以下程序使用 python 内置 sort() 函数对波形中的输入数组进行排序 −

# creating a function to sort the array in waveform by accepting # the input array, array length as arguments def sortingInWaveform(inputArray, arrayLength):    # sorting the input array in ascending order using the sort() function    inputArray.sort()    # travsersing till the array length alternatively(step=2)    for k in range(0, arrayLength-1, 2):          # swapping the adjacent elements i.e, current and it's next          inputArray[k], inputArray[k+1] = inputArray[k+1], inputArray[k] # input array inputArray = [12, 45, 15, 4, 6, 70, 68, 3, 25] # getting the length of the input array arrayLength = len(inputArray) # printing the given array/list print("The Given list is:", inputArray) # calling the above defined sortingInWaveform() function by # passing input array, length of the array as arguments sortingInWaveform(inputArray, arrayLength) print("The Result Array after sorting in wave form is:") # traversing through all the elements of the array for k in range(0, arrayLength):    # printing the current element of the array/list       print(inputArray[k], end=" ")

输出

在执行时,上述程序将生成以下输出 &miinus;

The Given list is: [12, 45, 15, 4, 6, 70, 68, 3, 25] The Result Array after sorting in wave form is: 4 3 12 6 25 15 68 45 70

时间复杂度 − O(nLogn).

在这里,给定的数组是使用排序函数排序的,该函数通常具有 O(NlogN) 时间复杂度。

如果应用了 O(nLogn) 排序算法,如合并排序、堆排序等,则上述方法具有 O(nLogn) 时间复杂度。

方法 2:仅使用一个循环

算法(步骤)

以下是执行所需任务要遵循的算法/步骤。−

  • 使用 for 循环通过传递 0、数组长度和步长值作为参数来遍历所有偶数索引元素

  • 使用 if 条件语句检查当前偶数索引元素是否小于前一个索引元素。

  • 如果条件为 true,则交换元素

  • 使用 if 条件语句检查当前偶数索引元素是否小于下一个元素。

  • 如果条件为 true,则交换元素

  • 通过传递输入数组和数组长度作为参数来调用上面定义的 sortingInWaveform() 函数

  • 使用 for 循环遍历数组的元素。

  • 打印数组/列表的相应元素。

以下程序仅使用一个 for 循环且不带内置函数以波形对输入数组进行排序 -

# creating a function to sort the array in waveform by accepting # the input array, array length as arguments def sortingInWaveform(inputArray, arrayLength):    # traversing through all the even index elements    for p in range(0, arrayLength, 2):       # checking whether the current even index element       # is smaller than the previous       if (p > 0 and inputArray[p] < inputArray[p-1]):          # swapping the elements if the condition is true             inputArray[p], inputArray[p-1] = inputArray[p-1], inputArray[p]             # checking whether the current even index element             # is smaller than the next element       if (p < arrayLength-1 and inputArray[p] < inputArray[p+1]):          # swapping the elements if the condition is true             inputArray[p], inputArray[p+1] = inputArray[p+1], inputArray[p] # input array inputArray = [12, 45, 15, 4, 6, 70, 68, 3, 25] # getting the length of the input array arrayLength = len(inputArray) print("The Given list is:", inputArray) # calling the above defined sortingInWaveform() function by # passing input array, length of the array as arguments sortingInWaveform(inputArray, arrayLength) print("The Result Array after sorting in wave form is:") # traversing through all the elements of the array for k in range(0, arrayLength):    # printing the current element    print(inputArray[k], end=" ")

输出

在执行时,上述程序将生成以下输出 -

The Given list is: [12, 45, 15, 4, 6, 70, 68, 3, 25] The Result Array after sorting in wave form is: 45 12 15 4 70 6 68 3 25

时间复杂度 − O(n)。

在这里,我们没有使用排序函数;相反,我们只是使用 for 循环来迭代给定数组的元素,平均而言,该数组具有 O(N) 时间复杂度。

结论

在本文中,我们学习了如何使用两种不同的方法对给定的波形阵列进行排序。与第一种方法相比,O(log N)时间复杂度降低的新逻辑是我们用来降低时间复杂度的逻辑。在许多情况下,这些算法有助于降低时间复杂性并执行有效的解决方案。


本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/10584.html

标签: Python
分享给朋友:

“使用 Python 对波形中的数组进行排序” 的相关文章

【说站】laravel实现自定义404页面并给页面传值

【说站】laravel实现自定义404页面并给页面传值

以 laravel5.8 为例,虽然有自带的404页面,但太简单,我们更希望能自定义404页面,将用户留在站点。实现的方式很简单,将自定义的视图文件命名为 404.blade.php,并放到 reso...

【说站】Thymeleaf报错Error resolving template “XXX”

【说站】Thymeleaf报错Error resolving template “XXX”

修改了一下开源项目的目录结构访问突然报错Error resolving template “XXX”可能原因有如下三种:第一种可能:原因:在使用springboot的过程中,如果使用thymeleaf...

【说站】利用Webhook实现Java项目自动化部署

【说站】利用Webhook实现Java项目自动化部署

用webhook就能实现Java项目自动部署,其实原理很简单。费话不多说,直接往下看教程。1. 创建gitee仓库并初始化2. 在linux安装git3. 在宝塔的软件的商店里下载Webhook4....

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

今天在安装MySQL时出现starting the server失败,经过查询分析得出以下结论,记录一下操作步骤。原因分析:如果电脑是第一次安装MySQL,一般不会出现这样的报错。如下图所示。star...

【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

PDF中的墨迹注释(Ink Annotation),表现为徒手涂鸦式的形状;该类型的注释,可任意指定形状顶点的位置及个数,通过指定的顶点,程序将连接各点绘制成平滑的曲线。下面,通过C#程序代码介绍如何...

【说站】linux中redis如何以redis用户重启?

【说站】linux中redis如何以redis用户重启?

通过上图我们可以看到,目前状态是已经以 redis 用户启动着,我想修改下 redis 的密码,然后怎么以 redis 用户重启呢?redis 是 nologin 用户,不能通过 su redis 切...