A ordenação de Mona
Mona criou um método para ordenar um array em ordem crescente.
Começando pelo lado esquerdo do array, ela compara os números de dois em dois. Se o primeiro par estiver ordenado [número menor, número maior], ela continua. Se o primeiro par estiver ordenado [número maior, número menor], ela troca os dois números inteiros antes de passar para o próximo par. Ela repete esse processo até chegar ao final do array.
Depois, ela volta ao início do array e repete esse processo até que todo o array esteja ordenado.
Se o array não ordenado for [3, 9, 7, 4], ela realizará os seguintes passos (observe que Trocas se refere aqui ao total acumulado de trocas):
- Ela começa com o primeiro par.
[3, 9]está ordenado; continue. Array:[3, 9, 7, 4]. Trocas:0.[9, 7]não está ordenado. Faça a troca. Array:[3, 7, 9, 4]. Trocas:1[9, 4]não está ordenado. Faça a troca. Array:[3, 7, 4, 9]. Trocas:2- Verifique se o array está ordenado. Ele não está, então recomece pelo primeiro par.
[3, 7]está ordenado; continue. Array:[3, 7, 4, 9]. Trocas:2[7, 4]não está ordenado. Faça a troca. Array:[3, 4, 7, 9]. Trocas:3.[7, 9]está ordenado; continue. Array:[3, 4, 7, 9]. Trocas:3.- Verifique se o array está ordenado. Ele está. Fim.
Ordenar o array [3, 9, 7, 4] exige 3 trocas. Escreva uma função que receba um array não ordenado e retorne o número de trocas necessárias para ordená-lo de acordo com o algoritmo de Mona.
Exemplos
number_of_swaps([5, 4, 3]) ➞ 3
number_of_swaps([1, 3, 4, 5]) ➞ 0
number_of_swaps([5, 4, 3, 2]) ➞ 6Observações
N/A