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
- 2.1.1导论
- 算法导论习题自作2.1-1
- 算法导论 2.1-2
- 算法导论 2.1-3
- 算法导论 2.1-4
- 算法导论2.1-4
- 算法导论2.1-4
- 算法导论@2.1-4
- 算法导论 练习 2.1
- 算法导论 2.1.4
- 算法导论 2.1-3
- 算法导论 2.1-4
- 算法导论 1-1
- 章一 导论(1)
- Enterprise JavaBeans导论1
- 算法导论 Theorem8.1
- 算法导论学习1
- 算法导论15.2-1
- 怎样估算软件项目周期-代码行估算法
- CSS样式中 justify 不起作用的问题
- jpa学习-table-per-class
- stm32 固件库之:中断
- wait_event_interruptible() 和 wake_up()的使用
- 2.1.1导论
- 代码整洁之道读书笔记(三)
- Java Polymorphism
- 数据库连接总结
- 机器学习项目开发经验
- NOIP2016 普及组 解题报告
- gdb
- Service 绑定
- java集合系列之LinkList