给定含有n个元素的整型数组a,其中包括0元素和非0元素,对数组进行排序,要求: 1. 排序后所有0元素在前,所有非零元素在后,且非零元素排序前后相对位置不变 2. 不能使用额外存储空间 例子如下 输入 0, 3, 0, 2, 1, 0, 0 输出 0, 0, 0, 0, 3, 2, 1
弱逼解法:
public class MoveZero { public static void doMove(int[] array) { for (int i = array.length - 2; i >= 0; i--) { if (array[i] != 0) { int j = i + 1; while (j <= array.length - 1) { if (array[j] != 0) { array[j - 1] = array[i]; array[i] = 0; break; } j++; } if (j > array.length - 1) { array[array.length - 1] = array[i]; array[i] = 0; } } } } }
正解:
public class MoveZero { public static void doMove(int[] array) { for (int i = array.length - 1, k = array.length - 1; i >= 0; i--) { if (array[i] != 0) { if (array[k] == 0) { array[k] = array[i]; array[i] = 0; } k--; } } } }
相关推荐
我们交换数组可以实现元素上下移动了,这个效果我们在表格或以前排序算法中都会用到,下面来看一个JavaScript下实现交换数组元素上下移动例子 在写项目的时候,要实现一个数组记录上下移动的示例。写起来也没有没...
在主函数中输入10个整数到数组中,调用函数move()完成将数组元素循环移动k位(要求函数参数为:1数组名;2数组元素个数;3循环移动的位数k)。当k>0时,实现循环右移;当k<0时,实现循环左移。循环右移一位的意义是:...
将一个具有n个元素的数组向左循环移动i个位置,这在很多弟弟都会用到。如将{1,2,3,4,5,6,7,8,9}变成{4,5,6,7,8,9,1,2,3}。
数组循环移动k位- -C++
用循环队列实现数组元素的移动,额外增加一个空间复杂度
二维数组的移动.txt
数组中的数分别后移M位,后面的向前补充,然后输出调整后的数组
each函数返回数组中当前的键/值对并将数组指针向前移动一步 基本语法 array each ( array &$array ) 在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。如果要再用...
2、 实数数组有16个存储空间,放着16个实数(键盘输入或初始化均可),将最小的与第一个交换,最大的与最后一个交换,然后依次输出这16个实数。
一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A 0 A 1 ⋯A N−1 )变换为(A N−M ⋯A N−1 A 0 A 1...
TIA博途中数组Array【】的基本使用方法详解
c++,有几种方法完成任务,注释清楚详细
# 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序 # 输入示例 # 输入: [0,1,0,3,12] # 输出示例 # 输出: [1,3,12,0,0] # 解析 # 双指针, 或者冒泡 # 冒泡: 两次循环, ...
如下所示: 代码如下: static void Main() { int[] array = { 1, 2, 3, 4, 5, 6, 7 }; MoveNumberArrayToEnd(array, 3); } static void MoveNumberArrayToEnd(IList<T> ... = 0 || arrayList.Count < num)
Java第5章 数组 含源代码 Java第5章 数组 含源代码 Java第5章 数组 含源代码 Java第5章 数组 含源代码 Java第5章 数组 含源代码
指针数组,将数组存放在堆中,删除堆中数组