用c++编写一个冒泡排序函数模板。对20个数序进行排序输出。

如题所述

第1个回答  2012-12-16
//冒泡函数如下

void BubbleSort()
{
int i,j;
int temp;
for(j=0;j<NUM-1;++j) //冒泡排序总次数为NUM-1,记得宏定义一个NUM值为20
{
for(i=0;i<NUM-j;++i) //给i计数
{
if(ArrInt[i]>ArrInt[i+1]) //对比临近两个元素,把值比较大的元素向下沉一个位置
{
temp=ArrInt[i];
ArrInt[i]=ArrInt[i+1];
ArrInt[i+1]=temp;
}
}
}
printf("数组最大的数为:%d\n",ArrInt[NUM]);
printf("数组最小的数为:%d\n",ArrInt[0]);
}
第2个回答  2012-12-04
似乎这个的关键不在模板,而在于传递排序对应的比较方式的函数指针。
既然用到模板,排序的往往就是类,而不像int char那样有固定的排序方式。所以必须由用户提供排序的规则(如 例子中的compareFunction)

可以参考标准库函数 Vector::sort()的处理方式。
eg:

template <T>
class SORT
{
public:
static T[] sort(T array[],compareFunction);
}

bool compareFunaciton1(CLASS1 &c1,CLASS1 &c2)
{
return c1.data>c2.data;
}
bool compareFunaciton2(CLASS2 &c1,CLASS2 &c2)
{
return c1.data>c2.data;
}

.............本回答被网友采纳
第3个回答  2012-12-04
书上有例子,也可以直接百度“冒泡排序”!
第4个回答  2012-12-04
这个跟 C语言很相似,百度下

产生20个0~1000的随机整数,放入一个数组中,然后输出这20个整数中大于5...
\/\/显示降序排序后的整数return0;}\/*函数描述:产生20个1000以内的随机数*\/\/*参数:p:指向数组的首地址·*\/\/*返回值:无*\/voidRandom(int*p){inti=0;srand((unsigned)time(NULL));p[0]=rand()%1000;\/\/将产生的随机数限制在1000以内for(i=1;i0;i--)\/\/比较19轮{for(k=0,j=i;k ...

求用c++写一个main函数冒泡排序 输入一个数组 分步骤写出每一步的结果...
int i,j,t,a[10]={20,34,54,33,56,78,91,11,76,49};printf("原来的数组:\\n");for(i=0;i<10;i++)printf("%d ",a[i]);printf("\\n");for(i=0;i<9;i++)for(j=0;j<9-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;} printf("排序以后的...

用c语言编写程序,用数组输出Fibonacci数列前20项
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File。2、定义变量和数组:#include<stdio.h>,void main(){ long i, j, k1, k2, k3, a[10] ={0}, num, m, n, sum; \/*定义变量及数组为长整形*\/。3、输入一个数表示范围: printf("请输入一个数表示范围:\\n"); ...

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

编写程序,使用“冒泡排序法”实现任意十个数的排序。
\/\/C++下的冒泡排序\\x0d\\x0a#include\\x0d\\x0ausingnamespacestd;\\x0d\\x0aintmain(){\\x0d\\x0aintsort[10],i,j,tMax;\\x0d\\x0acout>sort[i];\\x0d\\x0afor(i=1;isort[j+1]){\\x0d\\x0atMax=sort[j];\\x0d\\x0asort[j]=sort[j+1];\\x0d\\x0asort[j+1]=tMax;\\x0...

在c++中怎样编一段按照数从大到小的顺序并输出的程序
\/\/两个待排序数组, 分别用qsort和sort排序int n1, n2;\/\/两个数组元素个数cout << "请输入第一个数组元素个数: " << endl;cin >> n1;cout << "请输入第一个数组各个元素" << endl;for (int i = 0; i < n1; ++ i)cin >> arr1[i];qsort(arr1, n1, sizeof(arr1[0]), ...

C语言编程:将输入的N个整数采用冒泡排序按照从小到大的顺序排列并且输出...
void BubbleSort(int L[]) { \/\/ 对顺序表L作冒泡排序 int i,j,fini = 0;for (i = 1; i < n && !fini; i++) { fini = 1;for (j = 1; j <= n-i; j++)if (L[j] > L[j+1]) { L[0] = L[j];L[j] = L[j+1];L[j+1] = L[0];fini = 0;} } } ...

用冒泡排序法将下面数组中的数进行排序 ,并将排序后的结果输出到屏幕上...
public class Test { public static void main(String args[]) { int[] arr={5,2,0,13,14};Bubble bubble=new Bubble();bubble.sort(arr);} } class Bubble { int temp;public void sort(int[] arr) { for(int i=0;i<arr.length-1;i++) { for(int j=0;j<arr.length-1;j++...

C++ 冒泡排序法
j++){ if(arr[j]>arr[j+1]){ int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;} } } } int main(){ int s[10]={8,1,9,7,2,4,5,6,10,3};cout<<"初始序列:";print(s,10);BubbleSort(s,10);cout<<"排序结果:";print(s,10);system("pause");} ...

C++ 编程输入8个正整数,然后用冒泡排序法自动按从小到大的顺序输出...
i <= n - 1; i++)\/\/ n个数排序,只用进行n-1次{for (j = 1; j <= n - i; j++)\/\/ 从第1位开始比较直到最后一个尚未归位的数{if (a[j] < a[j + 1]){t = a[j];a[j] = a[i];a[i] = t;}}}for (i = 1; i <= n; i++)\/\/ 输出结果{printf("%d",...

相似回答