冒泡排序:与插入排序有类似的地方,插入排序分为有序部分和无序部分,有序部分在左边,无序部分在右边。而冒泡排序则相反,有序部分在右边,无序部分在左边,每次比较相邻两组数据,把大的往后挪。
#include <iostream>
using namespace std;
/*冒泡排序,思想:把一个数组分为左右两部分,有序部分在右边,无序部分在左边,每次比较相邻两组数据,把大的往后挪。
左边没有无序的,排序完成
*/
int main(void)
{
freopen("in.txt","r",stdin);
int a[10];
for(int i=0;i<10;i++){
cin >> a[i]; // 6 4 9 7 1 0 2 3 8 5
}
// finish input
//start sort
//冒泡排序关键代码start
for(int i=9;i>0;--i){
for(int j=0;j<i;++j){
if(a[j]>a[j+1]){
//a[j]与a[j+1]交换变量
a[j] = a[j] ^ a[j+1];
a[j+1] = a[j] ^ a[j+1];
a[j] = a[j] ^ a[j+1];
}
}
}
//冒泡排序关键代码end
// test
for(int i=0;i<10;i++){
cout << a[i] << " "; // 0 1 2 3 4 5 6 7 8 9
}
return 0;
}
运行结果: