本文共 683 字,大约阅读时间需要 2 分钟。
题目描述:
给定一个数组,在不申请新数组的情况下,把数组中非零元素稳定的放到数组前面,零元素放到数组后面。稳定就是非零元素的相对位置不要发生改变。题目很简单,水一下博客。
解题方案:
第一种方法,就是类似如插入排序的方法,遍历数组,如果遇到非零元素就将其向前移动,移动至前面的元素不为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
测试结果: