Dada una array de n números. El problema es mover todos los 0 al final de la array manteniendo el orden de los otros elementos. Solo se requiere un recorrido único de la array.
Ejemplos:
Input : arr[] = {1, 2, 0, 0, 0, 3, 6} Output : 1 2 3 6 0 0 0 Input: arr[] = {0, 1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0, 9} Output: 1 9 8 4 2 7 6 9 0 0 0 0 0
Algoritmo:
moveZerosToEnd(arr, n) Initialize count = 0 for i = 0 to n-1 if (arr[i] != 0) then swap(arr[count++], arr[i])
CPP
// C++ implementation to move all zeroes at // the end of array #include <iostream> using namespace std; // function to move all zeroes at // the end of array void moveZerosToEnd(int arr[], int n) { // Count of non-zero elements int count = 0; // Traverse the array. If arr[i] is non-zero, then // swap the element at index 'count' with the // element at index 'i' for (int i = 0; i < n; i++) if (arr[i] != 0) swap(arr[count++], arr[i]); } // function to print the array elements void printArray(int arr[], int n) { for (int i = 0; i < n; i++) cout << arr[i] << " "; } // Driver program to test above int main() { int arr[] = { 0, 1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0, 9 }; int n = sizeof(arr) / sizeof(arr[0]); cout << "Original array: "; printArray(arr, n); moveZerosToEnd(arr, n); cout << " Modified array: "; printArray(arr, n); return 0; }
Producción:
Original array: 0 1 9 8 4 0 0 2 7 0 6 0 9 Modified array: 1 9 8 4 2 7 6 9 0 0 0 0 0
Complejidad temporal: O(n).
Espacio Auxiliar: O(1).
Consulte el artículo completo sobre Mover todos los ceros al final de la array | ¡ Conjunto 2 (usando un solo recorrido) para obtener más detalles!
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA