2.1.1导论

来源:互联网 发布:英语入门软件 编辑:程序博客网 时间:2024/06/05 16:55

例.假设我们要对n>=1个类型为Type的元素排序,下面给出一个简单的解法:从尚未排序的元素中找到最小的,然后将其排到已排序表之后。

void SelectionSort(Type a[],int )
//将数组a[1:n]中元素降序排列
{
for(int i=0;i<n;i++){
      int j=i;
     for(int k=i+1;k<n;k++){
      if(a[k]<a[j]) j=k;
     }
 Type t=a[i];a[i]=a[j];a[j]=t;
     }
}

注意到这个程序还没有定义Type是什么。两种方式:(1)用typedef 语句,比如在函数定义的部分加上typedef int Type语句。(2)使用一个template,可以在第一行之前加上template<class Type>语句。这样做的好处是增强了程序在不同元素类型上的应用,避免重新编写整个程序。如果选择使用tepedef语句,那么元素的类型发生改变时,只需要重新编写这条语句,然后重新编译程序。使用template的话将更加灵活,甚至都不需要重新编译。同一个程序就能在不同类型的输入上使用。
下面是算法实现a[i+1],a[i+2]等进行比较,每当发现更小的元素时,就认为它是当前最小元素。最终a[n]与当前最小元素相比,任务结束。

#include<stdio.h>#include<iostream>typedef int Type;Type n=6;int a[]={2,6,1,0,3,9};void SelectionSort(Type a[],int n)//将数组a[1:n]中元素降序排列{ for(int i=0;i<n;i++){      int j=i;     for(int k=i+1;k<n;k++){     if(a[k]<a[j]) j=k;     }  Type t=a[i];a[i]=a[j];a[j]=t;     }}int main(){SelectionSort(a,n); for(int l=1;l<n;l++){   printf("%d ",a[l]);}}
代码已经测试过
0 0
原创粉丝点击