第一:哪一個是冒泡排序?
for(int i=0;i<n-1;i++)
for(int j=n-1; j>i;j--)
if(a[j] < a[j-1])
swap(a[j], a[j-1]);
或第二:
for(int i=0; i<n-1; i++)
for(int j=i+1; j<n; j++)
if(a[j] < a[i])
swap(a[j],a[i]);
或第三個版本:
int temp, i, j = 0;
boolean swaped = true;
while (swaped) {
swaped = false;
j++;
for(i = 0; i < arr.length - j; i++){
if(arr[i] > arr[i+1]){
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
swaped = true;
}
}
}
有人說,第一,有人說第二。那麼哪一個是對的?有人說第二個是交換排序。許多書說泡沫排序是第三個版本,但許多人稱第一個版本是泡沫排序。任何意見?
第三個版本 - 有點奇怪。它甚至排序? –
@MichaelDorgan:這是一個泡沫排序的常見優化 –
猜測我很久以前就停止使用它:)我想知道爲什麼? –