选择排序selection sort.docx
《选择排序selection sort.docx》由会员分享,可在线阅读,更多相关《选择排序selection sort.docx(13页珍藏版)》请在冰豆网上搜索。
选择排序selectionsort
【选择排序】selectionsort
①直接打擂的方式:
(直接选择排序法)directselection
②锦标赛的方法:
(树型选择法)non-tratifiedform
③堆排序:
heapsort
【完全二叉树】completebinarytree
【交换排序】exchangesort
【冒泡排序法】bubblesort
【快速排序法】quicksort
1.各种方法概述
1)结构化编程
程序应该按自上而下的顺序执行,不会做随便跳转。
主要为了提高可读性(特别是控制结构的),可自上而下的阅读代码,并且执行的顺序也大体是这样的。
它的三个组成部分:
顺序Sequence,选择selection,循环(或迭代)repetition(oriteration)。
任何控制结构都可以用这三个部分组成。
需要小心使用其他方式如:
break,continue,return,throw-catch.
2)模块化编程
将逻辑相关的数据和函数放在一个模块中。
它没有多个实例的概念,相当于面向对象中的仅包含静态方法和静态变量的类。
不需要实例化即可直接调用方法,只存在一个"实例"。
VB中的Module就是这个思想的应用。
3)面向对象编程
主要特点:
封装,继承,多态。
封装(Encapsulation):
将逻辑相关的数据和方法(函数)放在一个类中。
跟模块化编程做的一致。
继承(Inheritance):
将内容或接口重用,并实现类型的多态。
多态(Polymorphism):
不同的语义环境下,同一名称可以有多种不同的实现。
具体表现为两类:
同名方法不同内容,实现方式:
使用重载(overload),当然方法的参数是不同的;
同名类型不同内容,实现方式:
使用覆盖(override)或实现(implement)。
允许使用同一接口调用不同类的的实例对象。
2.各种方法的目标
结构化编程。
重点是是控制结构,可看作是基本程序语句(无子程序)的结构;
子程序化编程。
似乎没有相关的历史潮流,但我认为加入它会使整个方法的发展过程更加完整。
子程序(或过程、函数、方法)是模块化、面向对象编程的最重要的基石。
模块化编程。
重点是将数据和子程序逻辑相关的组合;
面向对象编程。
在模块化的基础上重点加入了模块之间的关系。
这里的模块已演化为类。
3.方法体系
上述几种编程方法可以归为一类,属于一个方法体系,其重点在于编程本身,力图管理并降低程序逻辑的复杂性。
随其发展,管理的代码单元越来越大,越来越复杂,其方式也越来越接近日常的思维。
核心是封装逻辑结构(子程序、模块、类),以便在更高层次上获得简化的关系。
我认为此体系中新的方法还未出现。
现在流行的方法中:
AOP(面向方面编程),仅是此体系有益的补充;SOA面向服务架构,重点在于用统一的方式调用,而不依赖于底层技术,是组件化的一种形式,这不是这一类的主线方向。
4.总结:
以往的编程方法和原则在现代的方法中得到了保留和发展,这对新手是一个挑战,不循序渐进的学习这些技术,想要短期学会现代方法(如:
面向对象编程)是困难的。
记住这些编程方法的主旨是很有好处的。
新的编程方法必将是历史方法的继承和发展,所以学好这些旧的方法非常重要。
掌握这些在各种层出不穷的新语言和新工具中不变的精华,或许,我们可以不再疲于追赶新的技术潮流。
微软的英汉词典对学习计算机英语不错
C语言中的关键字
auto:
声明自动变量一般不使用
double:
声明双精度变量或函数
int:
声明整型变量或函数
struct:
声明结构体变量或函数
break:
跳出当前循环
else:
条件语句否定分支(与if连用)
long:
声明长整型变量或函数
switch:
用于开关语句
case:
开关语句分支
enum:
声明枚举类型
register:
声明积存器变量
typedef:
用以给数据类型取别名(当然还有其他作用)
char:
声明字符型变量或函数
extern:
声明变量是在其他文件正声明(也可以看做是引用变量)
return:
子程序返回语句(可以带参数,也看不带参数)
union:
声明联合数据类型
const:
声明只读变量
float:
声明浮点型变量或函数
short:
声明短整型变量或函数
unsigned:
声明无符号类型变量或函数
continue:
结束当前循环,开始下一轮循环
for:
一种循环语句(可意会不可言传)
signed:
生命有符号类型变量或函数
void:
声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)
default:
开关语句中的“其他”分支
goto:
无条件跳转语句
sizeof:
计算数据类型长度
volatile:
说明变量在程序执行中可被隐含地改变
do:
循环语句的循环体
while:
循环语句的循环条件
static:
声明静态变量
if:
条件语句
C语言中的32个关键字
第一个关键字:
auto
用来声明自动变量。
可以显式的声明变量为自动变量。
只要不是声明在所有函数之前的变量,即使没加auto关键字,也默认为自动变量。
并且只在声明它的函数内有效。
而且当使用完毕后,它的值会自动还原为最初所赋的值。
自动变量使用时要先赋值,因为其中包含的是未知的值。
例:
autointname=1;
第二个关键字:
static
用来声明静态变量。
可以显式的声明变量为静态变量。
也为局部变量。
只在声明它的函数内有效。
它的生命周期从程序开始起一直到程序结束。
而且即使使用完毕后,它的值仍旧不还原。
即使没有给静态变量赋值,它也会自动初始化为0.例:
staticintname=1.
第三个关键字:
extern
用来声明全局变量。
同时声明在main函数之前的变量也叫全局变量。
它可以在程序的任何地方使用。
程序运行期间它是一直存在的。
全局变量也会初始化为0.例:
externintname;
第四个关键字:
register
用来声明为寄存器变量。
也为局部变量,只在声明它的函数内有效。
它是保存在寄存器之中的。
速度要快很多。
对于需要频繁使用的变量使用它来声明会提高程序运行速度。
例:
registerintname=1;
第五个关键字:
int
用来声明变量的类型。
int为整型。
注意在16位和32位系统中它的范围是不同的。
16位中占用2个字节。
32位中占用4个字节。
还可以显式的声明为无符号或有符号:
unsignedintsignedint.有符号和无符号的区别就是把符号位也当作数字位来存储。
也可用short和long来声明为短整型,或长整行。
例:
intnum;
第六个关键字:
float
用来声明变量的类型。
float为浮点型,也叫实型。
它的范围固定为4个字节。
其中6位为小数位。
其他为整数位。
例:
floatname;
第七个关键字:
double
用来声明为双精度类型。
它的范围为8个字节。
14位为小数位。
也可使用更高精度的longdouble它的范围则更大,达到10字节。
例:
doublename;
第八个关键字:
struct
用来声明结构体类型。
结构体可以包含各种不同类型的量。
比如可以把整型,字符型等类型的变量声明在同一个结构体种,使用的时候使用结构体变量直接可以调用。
例:
structsome{
inta=1;
floatb=1.1
double=1.1234567
}kkk;
这样就可以使用kkk.a来使用结构体中的成员变量了。
也可以显式的用structsomeaaa,bbb;来声明多个结构体变量。
第九个关键字:
char
用来定义为字符型变量。
它的范围通常为1个字节。
它在内存中是以ASC||玛来表示的。
所以它也可以跟整型来运算。
也可使用无符号或有符号来定义。
sigenedcharunsignedchar例:
charc;
第十个关键字:
break
用来表示中断。
一般用在循环中。
判断是否满足条件然后中断当前循环。
例:
break;
第十一个关键字:
continue
用来表示跳过当前其后面的语句,继续下一次循环。
例:
continue;
第十二个关键字:
long
用来声明长型的类型。
比如longintlongdouble.
第十三个关键字:
if
判断语句,用来判断语句是否满足条件,例:
ifa==b
k=n;
第十四个关键字:
switch
条件选择语句,常用来判断用户选择的条件来执行特定语句。
例:
switch(name)
{
caseok:
printf("yes,ok!
");
break;
caseno:
printf("oh,no!
");
default:
printf("error..!
")
break;
}
第十五个关键字:
case
配合switch一起使用,例子同上。
第十六个关键字:
enum
用来声明枚举变量。
..例:
enumday{one,two,three,four,five,six,seven};
第十七的关键子:
typedef
类型重定义..可以重定义类型,例:
typedefunsignedintu_int;//将无符号整形定义为u_int.
第十八个关键字:
return;
返回语句。
可以返回一个值。
当我们定义一个函数为有返回值的时候则必须返回一个值。
第十九个关键字:
unio
定义联共用体。
用法用struct相同。
不同的是共用体所有成员共享存储空间.
uniokkk{
inta;
floatb;
}kka;
第二十个关键字:
const
定义为常量..例:
constinta;//变量a的值不能被改变.
第二十一个关键字:
unsigned
定义为无符号的变量..默认变量都为有符号的.除非显示的声明为unsigned的.
第二十二个关键字:
for
循环语句.可以指定程序循环多少次.例:
for(inti=0;i<5;i++)
{
printf("程序将输出5次这段话!
");
}
第二十三个关键字:
signed
将变量声明为有符号型.默认变量就为signed型。
一般可省略。
第二十四个关键字:
void
空类型..一般用于声明函数为无返回值或无参数。
第二十五个关键字:
default
用于在switch语句中。
定义默认的处理.用法见switch。
第二十六个关键字:
goto
无条件循环语句.例:
inti=1;
w_go:
i++;
if(i<5)
gotow_go;
else
printf("%d",i);
第二十七个关键子字:
sizeof
用来获取变量的存储空间大小.
第二十八个关键字:
volatile
将变量声明为可变的.用法volatileinta;具体用法还是不太明白。
标记..!
!
第二十九个关键字:
do
一般与while语句配合使用.构成的形式如dowhile或whiledo.例见while语句。
第三十个关键字:
while
循环控制语句。
只要表达式为真就一直循环.
第三十一个关键字:
else
常用来配合if一起使用。
第三十二个关键字:
short
用于声明一个短整型变量:
例:
shortinta
accessarm磁头臂,存取臂
accesstime存取时间
adder加法器
address地址
alphanumeric字母数字的
analogcomputer模拟计算机
analyst分析员
area区域
array数组,阵列
assembler汇编程序
automation自动化
band区
batchprocessing成批处理
binarycode二进制码
binarydigit二进制位,二进制数字
bit比特,二进制的一位
branch分支,支线
brush电刷
bufferstorage缓冲存储器
calculator计算器
callinstruction呼叫指令
cardpunch卡片穿孔机
cardreader卡片阅读机,读卡机
cell单元
channel通道,信道
character字符
checkdigit校验数位
circuit电路,线路
toclear清除,清零
clock时钟
code代码
tocode编码
coder编码员,编码器
command指令,命令
compiler编译程序
computerlanguage计算机语言
console控制台
controlunit控制部件,控制器
corestorage,corestore磁心存储器
counter计数器
cybernetics控制论
cycle循环
data数据
dataprocessing数据处理
debugging调试
decision制定
digit数字,数位,位
digitalcomputer数字计算机
disc,disk磁盘
displayunit显示装置
drum磁鼓
toedit编辑
electronics电子学
emitter发射器
toencode编码
toerase擦除,清洗,抹除
feed馈送,供给
tofeed馈送,供给
feedback反馈
field字段,信息组,域
file文件
floppydisk软磁盘
floppydiskdrive软磁盘机
flowchart流程图
frame帧
hardware硬件
identifier标识符
index索引
information信息
inlineprocessing内处理
input输入
inquiry询问
instruction指令
integratedcircuit集成电路
tointerpret解释
item项目,项
jump转移
key键,关键码
keyboard键盘
latencytime等待时间
library库,程序库
linkage连接
toload装入,寄存,写入,加载
location存储单元
logger登记器,记录器
loop循环
machinelanguage机器语言
magneticstorage磁存储器
magnetictape磁带
matrix矩阵
memory存储器
message信息,报文
microcomputer微型计算机
module组件,模块
monitor监视器,监督程序,管程
nanosecond毫微秒
network网络,网
numeric,numerical数字的,数值的
octet八位位组,八位字节
operator操作员
opticalcharacterreader光符阅读机
opticalscanner光扫描器
output输出
overflow溢出,上溢
panel平板
parameter参数,参量
perforator穿孔机
peripheralequipment外围设备,外部设备
personalcomputer个人计算机
printedcircuit印制电路
printer打印机
printout打印输出
toprocess处理
processingunit处理部件
program程序
toprogram程序编制
programmer程序设计员
programming程序设计,程序编制
pulse脉冲
punch穿孔
topunch穿孔
punchedcard,punchcard穿孔卡片
punchedtape,punchtape穿孔纸带
punchhole孔,穿孔
randomaccess随机存取
toread读
reader阅读程序
reading阅读
realtime实时
record,register记录
redundancy冗余
routine例行程序
selector选择器,选择符
sentinel标记
sequence序列,顺序
sequential顺序的
serial串行的.连续的
shift移位,移数
signal信号
simulation模拟
simulator模拟器,模拟程序
software软件,软设备
sort分类,排序
sorter分类人员,分类机,分类程序,排序程序
storage存储器
tostore存储
subroutine,subprogram子程序
switch开关
symbol符号
symboliclanguage符号语言
system系统
tabulator制表机
teleprinter电传打字机
terminal终端
terminalunit终端设备
timer时钟,精密计时器
timesharing分时
timing定时
track磁道
transducer传感器,翻译机
translator翻译程序,翻译器
toupdate更新
Winchesterdiskdrive温彻斯特磁盘机,硬盘机
workingstorage工作存储器
method方法
function函数
procedure过程