<span style="font-size:18px;">
题目:将一个数组中的所有非零元素移动到数组的前面,零元素移动到数组的后面,同时返回新数组中第一个0元素 的下标,要求不能改变数组中非零元素的顺序。比如 : arr[10] = {1,3,0,2,0,0,8,0,4}; 移动之后为: arr[] = {1,3,2,8,4,0,0,0,0}</span></p>
方法一,利用两个循环,外层循环找到一个0元素,内层循环找到一个非0元素,然后交换位置,思路非常简单,但是代码写起来比较麻烦!!
1 #include<iostream>
2 using namespace std;
3 int main()
4 {
5 int array[10] = {2,5,0,1,0,0,8,4};
6 int count = 0;
7 for(int i = 0;i < 10;i++)
8 {
9 // 通过从前往后的遍历找到一个0元素
10 if(array[i] == 0)
11 {
12 for(int j = i;j < 10; j++)
13 {
14 // 从前往后遍历找到一个非0元素,然后交换
15 if(array[j] != 0)
16 {
17 array[i] = array[j];
18 array[j] = 0;
19 count++;
20 break;
21 }
22 }
23 }
24 }
25
26 //输出数组中的元素
27 for(int i = 0;i < 10;i++)
28 {
29 cout << array[i];
3