第一个:
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;
}
}
}
有人说第一个,有人说第二个。那么哪个是对的呢?有人说第二种是互换排序。很多书上说冒泡排序是第三版,但是很多人说第一版是冒泡排序。有什么意见吗?
最佳答案
第一个版本是冒泡排序,因为它比较每对相邻的项目。
第二个版本是选择排序,因为在每次外循环迭代后,a[i]
最终成为数组未排序右侧部分中的最小项。
关于c - 哪个是冒泡排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37163211/