je me suis retrouvé confronté à une question d'entrevue où le but était d'écrire un algorithme de tri qui trie un tableau de int
non triées valeurs:Quels sont les avantages de `while (condition) {// work}` et `do {// work} while (condition)`?
int[] unsortedArray = { 9, 6, 3, 1, 5, 8, 4, 2, 7, 0 };
Maintenant, je googlé et a découvert qu'il ya tant de sorting algorithms là-bas! Enfin, je pouvais me motiver à creuser dans Bubble Sort parce que cela semblait assez simple pour commencer.
J'ai lu le code d'échantillon et est venu à une solution qui ressemble à ceci:
static int[] BubbleSort(ref int[] array)
{
long lastItemLocation = array.Length - 1;
int temp;
bool swapped;
do
{
swapped = false;
for (int itemLocationCounter = 0; itemLocationCounter < lastItemLocation; itemLocationCounter++)
{
if (array[itemLocationCounter] > array[itemLocationCounter + 1])
{
temp = array[itemLocationCounter];
array[itemLocationCounter] = array[itemLocationCounter + 1];
array[itemLocationCounter + 1] = temp;
swapped = true;
}
}
} while (swapped);
return array;
}
Je clairement voir que cela est une situation dans laquelle la déclaration do { //work } while(cond)
est une grande aide pour être et empêche la utilisation d'une autre variable auxiliaire.
Mais est-ce le seul cas que cela soit plus utile ou connaissez-vous une autre application où cette condition a été utilisée?
En relation http://stackoverflow.com/questions/1035229/when-is-a-do-while-appropriate/1035234#1035234 –