我發現自己面臨着一個面試問題,其目的是寫一個排序算法進行排序無序int
值的數組:while(condition){// work}`和`do {// work} while(condition)`有什麼好處?
int[] unsortedArray = { 9, 6, 3, 1, 5, 8, 4, 2, 7, 0 };
現在我用Google搜索,並發現有這麼多的sorting algorithms有! 最後,我可以激勵自己挖掘Bubble Sort,因爲它看起來很簡單。
我讀了示例代碼,並來到了一個解決方案看起來像這樣:
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;
}
我清楚看出,這是一種情況:do { //work } while(cond)
語句是一個很大的幫助是,防止使用另一個輔助變量。
但是,這是唯一的情況下,這是更有用的,或者你知道任何其他應用程序,這種情況已被使用?
相關http://stackoverflow.com/questions/1035229/when-is-a-do-while-appropriate/1035234#1035234 – 2010-05-31 18:19:24