【携程2018校招】数组中非零元素稳定的放到数组前面,零元素放到数组后面

题目描述:

给定一个数组,在不申请新数组的情况下,把数组中非零元素稳定的放到数组前面,零元素放到数组后面。稳定就是非零元素的相对位置不要发生改变。题目很简单,水一下博客。

解题方案:

第一种方法,就是类似如插入排序的方法,遍历数组,如果遇到非零元素就将其向前移动,移动至前面的元素不为0或至数组顶端为止

第二种方法,操作更少,用一个从零开始的辅助下标,遍历数组,如果遇到非零元素就将其赋给辅助下标的位置,然后辅助下标加加。

代码:

import java.util.Scanner;

public class FirstQues {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		
		int num = in.nextInt();
		int[]  primaryArr = new int[num];
		for(int i=0; i=0; j--){
					primaryArr[j] = primaryArr[j+1];
					// 当前位置向前移动了,那么此位置就要补为0
					primaryArr[j+1] = 0;
					// 如果j为0,就不能减减了,不然会数组越界
					if(j==0) break;
				}
			}
		}
	}

	public static void settleArr2(int[] primaryArr){
		int index =0; 
		for(int i =0 ; i

测试结果:

【携程2018校招】数组中非零元素稳定的放到数组前面,零元素放到数组后面_第1张图片

你可能感兴趣的:(笔试面试题)