第一:哪一个是冒泡排序?
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:这是一个泡沫排序的常见优化 –
猜测我很久以前就停止使用它:)我想知道为什么? –