首页 > 代码库 > 摆动排序 II
摆动排序 II
题目;给一个数组,让后把它摆动排序。比如给[[1, 5, 1, 1, 6, 4],排序之后是[1, 4, 1, 5, 1, 6]; 给[1, 3, 2, 2, 3, 1],排序之后是[2, 3, 1, 3, 1, 2]
思路:题目实际要求O(n),但是没想到,简单的做法,先排序,然后从中间分成大小两部分,小的部分从中间到左边取,大的部分从右边往中间取。但是要先复制一份数组对它排序,然后用排好序的对原数组赋值。。
public class Solution { public void wiggleSort(int[] nums) { int n = nums.length; if(n == 0) return ; int[] a = Arrays.copyOfRange(nums,0,n); Arrays.sort(a); int k = 0 , p = (n-1)/2, q = n-1; boolean sign = true;
//sign控制交替赋值 while(k < n){ if(sign) nums[k++]=a[p--]; else nums[k++]=a[q--]; sign = !sign; } } }
摆动排序 II
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。