实现一个函数模板MyBubbleSort,对教材上的冒泡排序算法进行改进,当某一趟排序没有发生交换时则不用执行下一趟。算法实现代码应填写在alg5.h的相应函数中。在每趟排序完成后,应调用alg5.h中提供的ShowRunK函数显示该趟排序的结果。 算法测试时,第一行输入待排序元素个数,第二行输入待排序的各个元素。调用MyBubbleSort输出各趟排序结果。根据要求,补全以下代码。template<class ElemType> void ShowRunK(ElemType elem[], int n, int k) // 操作结果: 显示数组elem的各数据元素值 { cout << "第" << setw(2) << k << "趟排序结果:"; for (int i = 0; i < n; i++) { cout << setw(2) << elem[i] << " "; } cout << endl; } template <class ElemType> void MyBubbleSort(ElemType elem[], int n) // 操作结果:在数组elem中用冒泡排序进行排序
时间: 2023-07-15 21:11:53 浏览: 66
{
bool flag = true; //设置标志位
int i,j;
for(i=0;i<n-1 && flag;i++) //控制趟数
{
flag = false;
for(j=0;j<n-i-1;j++) //控制每趟排序的次数
{
if(elem[j] > elem[j+1]) //若前一个元素比后一个元素大,交换位置
{
swap(elem[j],elem[j+1]);
flag = true; //有交换,标志位为true
}
}
ShowRunK(elem,n,i+1); //显示该趟排序结果
}
}
阅读全文