`
zhao103804
  • 浏览: 124690 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

将数组中的 0 排在最左边,非0元素顺序不变

 
阅读更多
/**
 * @author zhaoliangyuan
 * @E-mail zhao19860603@163.com
 * @dateTime 2010/10/23 上午 11:58:25 类说明:
 * 将数组中的 0 排在最左边,非0元素顺序不变
 * 例:0,5,3,0,1
 * 排序后 0,0,5,3,1
 */
public class Test27 {
	public static void main(String[] args) {
		int[] array = { 1, 0, 3, 0, 0, -34, 786, 99, 0, 6, 100, 0, 0, 99, 0, 10, 4 };
		int[] arr = move2(array);
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + "  ");
		}
	}

	public static int[] move2(int[] array) {
		// 自右向左扫描,将所有非零元素紧凑到右侧
		int low, high;
		for (low = array.length - 1, high = low; low >= 0; low--)
			if (array[low] != 0) {
				array[high] = array[low];
				high--;// 更新紧凑序列的最左侧元素
			}
		// 将余下所有元素全部置为0
		for (; high >= 0; high--)
			array[high] = 0;
		return array;
	}
}
 
分享到:
评论

相关推荐

    python 移动零,给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序

    # 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序 # 输入示例 # 输入: [0,1,0,3,12] # 输出示例 # 输出: [1,3,12,0,0] # 解析 # 双指针, 或者冒泡 # 冒泡: 两次循环, ...

    有一个已排好序的数组,今输入一个数,要求按排序的规律将它插入数组中。

    本案例涉及的是在一个已排好序的数组中插入一个新的元素,并保持数组原有的排序规则不变。这种需求在多种场景下非常常见,比如数据库管理系统中的数据插入操作、搜索算法中的动态数据结构维护等。 #### 二、关键...

    不改变长度删除数组中的元素

    标题"不改变长度删除数组中的元素"所涉及的知识点,实际上是在探讨如何在保持数组长度不变的情况下,移除其中的特定元素。这种情况下,通常我们会采用一种称为“稀疏数组”或“标记”的技巧来实现。 数组的长度是其...

    js代码-给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

    首先,我们需要理解问题的核心要求:将数组中的所有0元素移到数组的末尾,同时保持非0元素的相对顺序不变。这意味着在处理过程中,我们不能简单地使用`filter()`或`splice()`等方法,因为它们可能会改变非0元素的...

    数组循环移动k位- C++

    数组循环移动,通常指的是将数组中的元素向左或向右移动固定步数(k位),同时保持数组中元素的相对顺序不变。例如,对于数组`[1, 2, 3, 4, 5]`,若向右移动2位,则结果为`[4, 5, 1, 2, 3]`;若向左移动2位,则结果...

    Javascript数组操作整理.rar

    - `reverse()`:反转数组中的元素顺序。 - `sort()`:对数组的元素进行排序。默认按字母顺序。 7. 查找数组元素: - `indexOf()`:查找指定元素在数组中的位置,返回索引,找不到则返回-1。 - `lastIndexOf()`...

    自动合成数组不变式.pdf

    尤其在处理涉及数组操作的程序时,数组不变式能够帮助我们捕捉到数组元素之间的关系,从而更有效地进行分析。 论文提出了一个针对一维和多维数组的自动合成方法,特别关注那些按照特定顺序访问数组的程序。该方法的...

    c语言编程题之数组操作删除排序数组中的重复项.zip

    在最坏的情况下,如果所有元素都相同,我们将需要创建一个新的数组,因此空间复杂度为O(n)。在最好的情况下,数组中没有重复元素,空间复杂度为O(1)。 需要注意的是,这种方法改变了原数组。如果需要保持原数组不变...

    关于多维数组转化为一维没有重复元素的php代码

    通过以上两个函数的组合使用,我们可以将任意的多维数组转换为一个不含重复元素的一维数组,并且保持原始数组的元素顺序不变。这种方法不仅适用于简单的数据处理场景,还能够在复杂的项目中发挥作用。同时,这种...

    使用php对二维数组按数组值进行排序

    在上述代码中,`compare_by_score()`函数接收两个数组元素作为参数,并比较它们的'score'键的值。如果第一个元素的分数小于第二个,函数返回-1,表示第一个应该排在前面;如果第一个元素的分数大于第二个,函数返回1...

    数组应用&二维数组.doc

    选择排序的思路是:首先,遍历数组中的每一个元素,然后选择最小或最大的元素,并将其放置在数组的开头或结尾。 代码: ```java public class ArrayDemo { public static void main(String[] args) { int[] ...

    易语言数组相同的判断

    它会将一个内存区域的内容复制到另一个内存区域,如果两个数组完全相同,那么拷贝后内存区域的内容不变,即`拷贝内存`返回0。这里假设数组的元素都是整型,占用4个字节,所以乘以4得到实际需要拷贝的字节数。 需要...

    PHP数组排序函数合集 以及它们之间的联系分析

    使用该函数,数组元素将按照降序排列。 **asort()函数**:该函数在排序过程中会保持数组的键值对应关系。对于关联数组来说,这是一个非常有用的特性。例如,在处理数据库查询结果时,我们可能希望在排序后依然能...

    Java数组讲解

    - **默认初始化**: 如果不显式地给数组元素赋值,Java会自动给它们赋默认值。例如,对于`int`类型的数组,默认值为`0`。 ```java for (int i = 0; i ; i++) { System.out.println(data[i]); // 输出默认初始化的...

    matlab数组与运算

    4. 数组逻辑运算:如逻辑与(`&`)、逻辑或(`|`)、非(`~`)可以用于比较和筛选数组元素。 四、数组索引与切片 1. 单索引和双索引:MATLAB数组的索引从1开始,可以通过单索引或双索引访问元素。 2. 面积索引:...

    c语言的基本算法 数组排序

    首先,数组排序是算法设计中常见的问题,它涉及到数组元素的重新排列,以达到特定的顺序,例如升序或降序。这里提到了两种基本的排序算法:筛选法(用于求素数)和选择法(用于整数排序)。 1. **筛选法**: - ...

    JavaScript使用delete删除数组元素用法示例【数组长度不变】

    了解这些方法后,你可以根据实际需求选择合适的方式来删除数组元素。在大多数情况下,使用`splice()`或`filter()`会更加合适,因为它们会更新数组的长度,使得数组的表示更清晰。而`delete`操作符在处理数组时应谨慎...

    php array_pop()数组函数将数组最后一个单元弹出(出栈)

    例如,如果你需要保持数组的顺序不变,`array_pop()` 是一个很好的选择;而如果你想删除数组中的特定元素,可能需要使用 `unset()` 或者 `array_splice()` 函数。总之,熟练掌握这些数组函数,能让你在处理 PHP 数组...

    均匀随机排列数组

    一个数组的**随机排列**是指将数组中的元素以随机顺序重新排列,确保每一次排列都是独立的,并且每一种可能的排列出现的概率相同。这种排列在很多场景下极为重要,例如在密码学、统计抽样、机器学习的数据集预处理...

Global site tag (gtag.js) - Google Analytics