java如何实现摆动排序
发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,这篇文章主要为大家展示了"java如何实现摆动排序",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"java如何实现摆动排序"这篇文章吧。给定一个无序的数组
千家信息网最后更新 2024年11月17日java如何实现摆动排序
这篇文章主要为大家展示了"java如何实现摆动排序",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"java如何实现摆动排序"这篇文章吧。
给定一个无序的数组 nums
,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]...
的顺序。
示例 1:
输入: 输出: 一个可能的答案是
示例 2:
输入: 输出: 一个可能的答案是
答案:
1public void wiggleSort(int[] nums) {
2 int n = nums.length, m = (n + 1) >> 1;
3 int[] copy = Arrays.copyOf(nums, n);
4 Arrays.sort(copy);
5 for (int i = m - 1, j = 0; i >= 0; i--, j += 2)
6 nums[j] = copy[i];
7 for (int i = n - 1, j = 1; i >= m; i--, j += 2)
8 nums[j] = copy[i];
9}
解析:
先把nums复制到另一个数组copy中,然后再对copy数组进行排序,这里是先把copy数组的前半部分从后往前每隔一个插入到数组nums下标的偶数位中(下标从0开始),然后再把数组copy的后半部分从后往前每隔一个插入到数组nums下标的奇数位中,因为数组copy是排序过的,所以数组nums中的值都会是下标奇数位上的值大于他的前一个和后一个,同理下标是偶数位上的值都会小于他的前一个和后一个值。我们还可以换种写法
1public void wiggleSort(int[] nums) {
2 int[] copy = Arrays.copyOf(nums, nums.length);
3 Arrays.sort(copy);
4 int n = nums.length;
5 int left = (n + 1) / 2 - 1; // 中间的索引
6 int right = n - 1; // 最大值的索引
7 for (int i = 0; i < nums.length; i++) {
8 if (i % 2 == 1) {
9 nums[i] = copy[right];
10 right--;
11 } else {
12 nums[i] = copy[left];
13 left--;
14 }
15 }
16}
写法上虽然有一点点的差别,但原理还是一样的。
以上是"java如何实现摆动排序"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
数组
排序
下标
数位
内容
答案
篇文章
写法
示例
索引
学习
帮助
输入
输出
最大
前半部
半部
原理
差别
易懂
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
mfc软件开发是什么意思
文件服务器怎么开审计记录
鼓风机选型软件开发技术
数据库sql语句类型
软件开发宣传计划
服务器如何布置应用软件
matebook适合软件开发
线上网络安全心得体会
中专软件开发专业怎么样
60级插件 数据库
软件开发容易秃顶吗
go 数据库
迷你世界怎么建立自己的服务器
天津工业软件开发零售价格
申论 网络安全和信息化
网络安全专家解读
搭建远程ftp服务器
软件开发可以办退税吗
深圳软件开发深圳
阿里云 网络安全 招聘
非关系型数据库只有一张表吗
安可数据库
服务器稳定性的定义
mysql数据库间同步
网络安全伴我行1000字
dcs服务器保修
计算机网络技术专业的思科
execl列导入数据库表
程序员进行软件开发
电商系统软件开发工具的选择