冒泡排序来来回回写了好多次,今天写完索性把它记录成一篇博客。
1. 算法思想
假设数组的长度为
l
e
n
len
len,那么需要进行
l
e
n
−
1
len-1
len−1 趟排序,
i
i
i 代表躺数;
对于每趟排序,涉及到的比较次数是
l
e
n
−
i
len-i
len−i 次。
e g . eg. eg. 有10个数进行排序,排序的躺数为9躺,第一趟排序需要比较9次,第二趟排序需要比较8次。
2. CPP代码
#include<iostream>
#include<stdlib.h>
#include<vector>
using namespace std;
#define random() rand()%100
class bobble
{
public:
// 声明带两个参数的构造函数
bobble(vector<int>, int);
void bobblesort();
private:
vector<int> arr1;
int len1;
};
// 在类外实现构造函数
bobble::bobble(vector<int> arr, int len) {
arr1 = arr;
len1 = len;
}
// 冒泡排序在这里实现
void bobble::bobblesort() {
for (int i = 1; i < len1; i++) {
for (int j = 0; j < len1 - i; j++) {
int tem;
if (arr1[j] > arr1[j + 1]) {
tem = arr1[j];
arr1[j] = arr1[j + 1];
arr1[j + 1] = tem;
}
}
// 每趟排序完打印出结果
cout << "第" << i << "趟排序的结果为:";
for (int k = 0; k < len1; k++) {
cout << arr1[k] << " ";
}
cout << endl;
}
}
int main() {
// 声明 vector
vector<int> arr;
cout << "原数组为:" << " ";
// 用随机数生成待排序的数组
for (int i = 0; i < 10; i++) {
int j = random();
cout << j << " ";
arr.push_back(j);
}
cout << endl;
cout<<endl;
// bubble类实例化
bobble b(arr, arr.size());
b.bobblesort();
return 0;
}
3. 运行结果
我的本科柚子味~~~