Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用 Python 对波形中的数组进行排序

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

作者头像
很酷的站长
发布于 2023-02-22 05:55:04
发布于 2023-02-22 05:55:04
7.5K00
代码可运行
举报
运行总次数:0
代码可运行

在本文中,我们将学习一个 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() 函数对波形中的输入数组进行排序 −

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 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;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 循环且不带内置函数以波形对输入数组进行排序 -

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 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=" ")

输出

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)时间复杂度降低的新逻辑是我们用来降低时间复杂度的逻辑。在许多情况下,这些算法有助于降低时间复杂性并执行有效的解决方案。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用 Python 按行和按列对矩阵进行排序
假设我们采用了一个输入的 MxM 矩阵。我们现在将使用嵌套的 for 循环对给定的输入矩阵进行逐行和按列排序。
很酷的站长
2023/02/22
6.6K0
使用 Python 按行和按列对矩阵进行排序
C#经典十大排序算法(完结)
冒泡排序算法是一种基础的排序算法,它的实现原理比较简单。核心思想是通过相邻元素的比较和交换来将最大(或最小)的元素逐步"冒泡"到数列的末尾。
追逐时光者
2023/10/25
3400
重学数据结构和算法(五)之归并排序、快速排序
冒泡排序、插入排序、选择排序这三种排序算法,它们的时间复杂度都是 O(n2),比较高,适合小规模数据的排序。归并排序和快速排序的时间复杂度为 O(nlogn) 。这两种排序算法适合大规模的数据排序
六月的雨
2021/09/26
1.3K0
重学数据结构和算法(五)之归并排序、快速排序
十大经典排序算法最强总结(含Java、Python码实现)
所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符合实际的优秀算法,得经过大量的推理和分析。
10JQKA
2020/12/31
9690
十大排序算法理解总结
1、时间复杂度:O(n2)O(n^2)O(n2) 2、空间复杂度:O(1)O(1)O(1) 3、稳定排序 4、原地排序
鳄鱼儿
2024/05/21
1370
文心一言 VS 讯飞星火 VS chatgpt (79)-- 算法导论7.4 4题
首先,为了证明RANDOMIZED-QUICKSORT的期望运行时间是Ω(nlg n),我们需要证明在最坏的情况下,该算法的运行时间是O(nlg n)。然后,我们需要证明在最坏的情况下,算法的期望运行时间是Ω(nlg n)。
福大大架构师每日一题
2023/08/29
3110
文心一言 VS 讯飞星火 VS chatgpt (79)-- 算法导论7.4 4题
归并排序
归并排序是采用分治法的典型应用,而且是一种稳定的排序方式,不过需要使用到额外的空间。
Li_XiaoJin
2022/06/10
2940
归并排序
JavaScript 数据结构与算法之美 - 归并排序、快速排序、希尔排序、堆排序
笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算法和方便以后复习。
夜尽天明
2019/07/30
2.4K0
排序算法-下(Java语言实现)
的排序算法,归并排序和快速排序。这两种排序算法适合大规模的数据排序,比上一节讲的那三种排序算法要更常用。
acc8226
2022/05/17
4560
排序算法-下(Java语言实现)
快排查找数组中的第K个最大元素
两种时间复杂度为O(nlogn)的排序算法,归并排序和快速排序。这两种排序算法适合大规模数据排序,更常用。
JavaEdge
2021/12/07
4.1K0
快排查找数组中的第K个最大元素
八大排序算法总结与java实现
因为健忘,加上对各种排序算法理解不深刻,过段时间面对排序就蒙了。所以决定对我们常见的这几种排序算法进行统一总结,强行学习。首先罗列一下常见的十大排序算法:
林老师带你学编程
2019/05/27
9160
八大排序算法
​ 八大排序算法是面试经常考到的,尤其是快排,希尔排序和归并也是经常会让写代码的题目,其实只要用一句话说明了他们的原理我们写起代码就没那么困难。 冒泡排序 思想:有 n 个数我们就进行 n-1 趟排序,每一趟我们都选取最大的一个数放到已经排序的位置即可。 伪代码:两个 For 循环,外层表示要进行的趟数,内层则是找出最大的数,找最大的数的方法就是比较、交换。 时间复杂度:O(n2) 空间复杂度:O(n) 代码: package Sorting; import org.junit.jupiter.ap
lwen
2018/04/17
9270
八大排序算法
剑指offer | 面试题38:数组中的逆序对
「归并排序」与「逆序对」是息息相关的。归并排序体现了 “分而治之” 的算法思想,具体为:
千羽
2022/02/23
1K0
剑指offer | 面试题38:数组中的逆序对
排序算法之希尔、归并、堆和基数排序
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
海仔
2019/10/28
5250
Python3实现快速排序、归并排序、堆
# -*- coding: utf-8 -*- # @Time : 2019-03-26 16:46 # @Author : Jayce Wong # @ProjectName : leetcode # @FileName : sorting.py # @Blog : https://blog.51cto.com/jayce1111 # @Github : https://github.com/SysuJayce import random
py3study
2020/01/06
3420
[数据结构与算法] 排序算法之冒泡排序与快速排序(快排)
冒泡排序法 冒泡排序(Bubble Sorting)的基本思想是: 通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水
时间静止不是简史
2020/07/25
3840
排序算法最强总结及其代码实现(Python/Java)
假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。
蛮三刀酱
2019/03/26
5180
排序算法最强总结及其代码实现(Python/Java)
排序进行曲-v2.0
![在这里插入图片描述](https://img-blog.csdnimg.cn/b9733adc7ec9467cb835499ec469cdac.png
学编程的小程
2023/10/11
1840
排序进行曲-v2.0
Python Data Structures - C2 Sort
参考内容: 1.Problem Solving with Python Chapter5: Search and Sorting online_link 2.算法导论
宅男潇涧
2018/08/01
4420
Python Data Structures - C2 Sort
【剑指offer:数组中的逆序对】暴力法、归并排序(JavaScript实现)
时间复杂度是$O(N^2)$。在 leetcode 上会 TLE,无法通过(毕竟这是道标注「困难」的题目)。
心谭博客
2020/04/21
1K0
相关推荐
使用 Python 按行和按列对矩阵进行排序
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验