冒泡排序是一种最简单的交换排序算法。 堆排序也是一种交换排序(通过交换元素进行排序)。
定义四个变量标识i一趟,j比较的元素,temp临时交换值,flag是否交换标志位。
void pop_sort(vector<int>&num) {
int i, j, temp;
bool flag;//有没有交换元素
flag = true;//一开始flag=ture,为了进入循环
i = num.size()-1;//需要比较n-1次,i的范围是[1,n-1]
while (i > 0 && flag == true) {
flag = false;//进入循环,没有交换之前先置为false
for (j = 0; j < i; j++) {//每趟交换i-1次
if (num[j] > num[j + 1]) {
flag = true;//发生交换,置为ture
temp = num[j];//交换
num[j] = num[j + 1];
num[j + 1] = temp;
}
}
for (j = 0; j <= i; j++) {//测试每趟的排序结果,输出[0,i]下标的元素
cout << num[j] << " ";
}
cout << endl;
i--;
}
}