冒泡排序过程:首先将第一个关键字和第二个关键字进行比较,若为逆序则将两个记录交换,然后比较第二个记录和第三个记录,依次类推,知道第n-1个记录和第n个记录的关键字进行比较为止。此过程称为第一趟起泡排序,其结果为使得关键字最大的记录被安置到最后一个记录的位置,然后进行第二趟排序。
例如:输入:
49 38 65 97 76 13 27
一趟结束后为:
38 49 65 76 13 27 97
两趟之后为:
38 49 65 13 27 76 97
..................
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void bubble(vector<int> &nums){
int len = nums.size();
for(int i = 0;i<len;i++){//控制总的趟数
for(int j =1;j<len-i;++j){//一次冒泡排序的结果
if(nums[j-1]>nums[j]) swap(nums[j-1],nums[j]);
}
}
}
int main(){
int n;
while(cin>>n){
vector<int> nums(n);
for(int i =0;i<n;++i){
cin>>nums[i];
}
bubble(nums);
for(int i = 0;i<n;++i){
cout<<nums[i]<<" ";
}
}
return 0;
}
参考:严蔚敏版《数据结构》