C++ 定义模板函数实现冒泡法升序排序

用 C++ 语言的编程风格编写两个函数模板:( 1 ) void bubble_sort(T a[], int num); 功能:用冒泡排序法对数组 a 中的 num 个元素进行升序排列。( 2 ) void print(T a[],int num) ; 功能:输出数组 a 中的 num 个元素值,输出所有元素结束后换行主函数中定义两个数组:int a[6]; 和 double b[7];数组的元素由键盘读入,无输入提示。然后调用以上两个函数实现程序的功能。本题输入及输出结果对应如下 :测试用例 1 :输入内容:3 5 9 -7 1 6< 回车 >1.1 9.8 -5.4 3.5 6.8 3.2 0.1< 回车 >输出内容:-7,1,3,5,6,9,-5.4,0.1,1.1,3.2,3.5,6.8,9.8,

#include <iostream>
using namespace std;

template<typename T>
void bubble_sort(T a[], int num)
{
int i, j, temp;
int flag = 1;
for (i = 0; i < num - 1 && flag == 1; i++) //冒泡排序N*N
{
flag = 0;
for (j = 0; j < num - i - 1; j++)
{
if (a[j + 1] < a[j])
{
temp = a[j + 1];
a[j + 1] = a[j];
a[j] = temp;
flag = 1;
}
}
}
}

template<typename T>
void print(T a[],int num)
{
int i;
for (i = 0; i < num; i++)
{
cout << a[i] << " ";
}
}

int main()
{
int i;
int a[6];
double b[7];
for (i = 0; i < 6; i++)
{
cin >> a[i];
}
for (i = 0; i < 7; i++)
{
cin >> b[i];
}
bubble_sort(a, 6);
bubble_sort(b, 7);
print(a, 6);
print(b, 7);
return 0;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

用C++语言编写程序实现:设计一个函数模板,实现用冒泡法对10 个某类型...
冒泡排序算法的运作如下:1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3、针对所有的元素重复以上的步骤,除了最后一个。4、持续每次对越来越少的元素重复上面的步骤,直到...

...的顺序排序(冒泡法),要求排序功能自定义函数实现”
include"stdio.h" void main() { int a[1000]; int i,j,n; int temp; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); for(j=0;j<n;j++) { for(i=0;i<n-j;i++) if(a[i]>a[i+1]) {temp=a[i];a[i]=a[i+1];a[i+1]=temp;} } for(i=1...

求C++程序:任意从键盘输入10个整数,按从小到大的顺序排序,并输出结果...
1.首先,定义一个结构,包括数值、排名和序号。2.定义结构数组变量d,保存所有整数信息。3.接下来,定义一个自定义函数来比较整数序列中任意两个整数的大小。4.定义一个自定义函数,比较整数序列中任意两个数字的序数大小。5.在主函数中,首先定义两个整数,并保存整数个数和排名计数。6.使用for...

求C++程序:任意从键盘输入10个整数,按从小到大的顺序排序,并输出结果...
要实现一个C++程序,可以从键盘输入10个整数并按升序排序,下面是具体步骤:首先,创建一个结构体,包含整数值(int),对应的排名(int)以及序号(int)。接着,定义一个结构体数组`d`来存储这10个整数的信息。自定义一个函数,用于比较两个整数的大小,这将在排序过程中起到关键作用。另一个函数则...

c++冒泡法排序的模板 错误:invalid template argument 'size' H...
~sort_bubble(){delete [] a;} \/\/析构函数释放构造函数释放的内存 void set(){ int i;cout<<"请输入数组"<<endl;for(i=0;i<size;i++)cin>>a[i];} void bubble(){ int i,j,temp=0; \/\/冒泡排序每次将最大或者最小的数移到尽头 for(i=0;i<size;i++){ for(j=0;j<s...

c语言的两种排序?
1、选择排序法 要求输入10个整数,从大到小排序输出 输入:2 0 3 -4 8 9 5 1 7 6 输出:9 8 7 6 5 3 2 1 0 -4 代码:include<stdio.h> int main(int argc,const char*argv[]){ int num[10],i,j,k,l,temp;\/\/用一个数组保存输入的数据 for(i=0;i<=9;i++){ scanf(...

c语言编程题:分别用冒泡法和选择法对输入的10个整数由大到小排序
void maopao(int *a){ int temp=0;for(int i=0;i<10-1;++i)\/\/只需要冒泡9个数最后一个就已经有序了 for(int j=0;j<10-i-1;++j)\/\/j的取值需<10-i-1;为何-1,if(a[j]<a[j+1]){ temp=a[j];a[j]=a[j+1];a[j+1]=temp;} } void xuanze(int *a){ for(int...

c\/ c++冒泡法排序后插入一个数据,如何反序输出
c\/ c++冒泡法排序后插入一个数据,反序输出:在C++语言中可以使用递归函数来实现这样一个功能。在主函数中,先读入一个整数,然后调用这个递归函数。在递归函数中检测一下,如果形式参数的值大于9就去掉形式参数的个位数后,递归调用自身,然后在每一次的返回前输出形式参数的个位数。include <stdio.h> ...

C++ algorithm 里的sort函数怎么用
是对数组a降序排序 又如:int cmp( const POINT &a, const POINT &b ){ if( a.x < b.x )return 1;else if( a.x == b.x ){ if( a.y < b.y )return 1;else return 0;} else return 0;} sort(a,a+n,cmp);是先按x升序排序,若x值相等则按y升序排。默认的sort函数是按...

相似回答