2024年4月30日发(作者:)
维普资讯
2002年第2期 微机发展
文章编号;1005—3751(2002)02—0055—03
基于链表的对分排序算法及实现
The Algorithm and Implementation of Divide Equally Sort on Link—list
张磊(潍坊学院计算中 ,山东潍坊261{341)
(Ceftter of Computer,Wd[ang College,Weilang SD 261041,China)
typedd Bc~ nc ̄le
ZI-I ̄n4G
精要:针对以链表为存储结构的数据对象盛行捧序方法研
究。具体描述了对分排序的算法思想,井给出了实现排序算法
的有关函数。
d如fype d日[日;
㈣I node 口Ⅲ{
关t调:对分排序;算法;排序函数
ABSTRACT:Stx.-diesthe 9qnm目± 删,蛾删r曝∞the data ob—
j氍t l_sed link—list船Btore虬rLIc“ e,and describes the algorithm
method on divide equally s0n in d aU also.s
tlc ̄s are given tO implelyl ̄t the algorithem.
lNODE;
(3)binary sort():对丹排序函数,功髓为:
①生成kj、large、order链表的头结点;
0对丹尚未排序的head链表(K集合),生成一越
排序用less、large链表;
③调用find—less()、find—large()函数,求得一趟排
序的最小值和最大值,依欢插入order链表中;
④控制实现各趟排序,直至排序结束。
(4)find less()函数:求最小值函数,初始数据为
binary—sort()函数生成的l啪链表.若非空,则不断对
related[unc—
KEYWORDS:Di,ide E目ualfly Sort;Algorithm;Sort Function
中圉分娄号:TP301 6 文献标识码:A
1算法描述
设K=1 l^ ∈e&.mtype,1≤i≤ 为一组关
键字集舍.其中eh'mtype为算法语言允许的数据类型,
对丹排序过程如下:
(1)自^,起.依欢将K中元素两两分组,收集每
一
分,将瑶I豫的较大结点插入head链表,直至less只有
一
个值结点时函数结束。该结点即为本趟排序的最小
(5)find—lrge()函数:求最大值函敦,初始数据为 a
组{ ,a…l的小值组成集合tess,每组其余元素组
(2)若 为奇数,设rain( ~a 1)为其二元素
结点。
成集合large;
的最小值,则当a <rain(a _2I 一1)时,d 加入less
集合。否则加入large集合;则对于K。其最小元素必在
less中.其最大元素必在large中;
(3)分别在less和large中取出最小值和最大值,
加入有序集合order中;
(4)依欢收集k 和large集合为K;
binary—sort()函数生成的large链表,若非空,则不断对
丹,将删除的较小结点插入head链表.直至lar 只有
一
十值结点时函数结束。该结点即为本趟排序的最大
2.2捧序函数
2.2.1 binary—srrt()函数
NODE*b LnBIy 州(NODE*beBd)
{NODE c |*le ,*【啦 P. q. b ^ 1籼;
结点。
(5)重复(1)、(2)、(3)、(4)直至集合K= ,别
order即为有序集合。
2算法实现
2 1定义
D wfi(NODE*h bc( 删fN0DE】)
; new DExt NU'LL:∞d时 n w;I=
rl w=(NODE )r∞】l0c【8删
ne
N0DE));
NULL;tessfif nBw:
r州=【N()DE )m l0c【B酬
w—r =NULL ̄【a …
N0DE));
{
(1)head、less、large、order:带附加头结点的单链
表,K存储于1lead中:
(2)NODE:head、less、large、order的结点类型.
定义为:
(戢藕日期]2o01一l0—08
while(} 一DEml=NULL)
{q=heedl P=q一…;3=has:
whde(pl=,NULL&&口_-Dexll fi fNULL)
li“ d日Ia>p-+DHt・dB船)
l xt P rl I;p ̄next=P n pnⅢ|
l艘t; q pj P=r
维普资讯
微机发展 2002年第2期
d舶
d冀
I t=p; nEm-
;
mxt}q nem{P rnem‘
Ir・口瞄t=p;q一呲l—P
q P mt;p q’ }
r.r’em h_d nⅢ;
h_d_- :II t‘
s。 t; ̄neXt NULL
【 一NuLL&& d日t d山}
I口一口E时=NULL;
Ⅱ(head ̄D味t一一t==NULL&&【 B_.mm=fiNULL)f
l】∞ ・nen=h 一nem;h 一口Em=NULLII
eI dfp—Den==NULL&& ̄-data> dm)
tr ̄ ̄xt=h 一n嘲'
heB 眦l=p;
I口一 t=NULL ̄ 一nem=P;}
h r I hea十.net‘;
3算法分析
3 1空阃复杂性分析
h∞c ・next=NULL;
fiml 1岛日c Jess.head);
J B_.nem =t—D味t;
(1)数据存储采用带有头结点的单链丧结构.需
要4十NODE类型结点,分别用于heod、less、large、
order的头结点。
(2)排序过程中额外数据空间开销为0。
(3)需要多个指针变量
3.2时间复杂性分析
t—n%I 1∞
… ;
;
br+ =NULL;
tim[一
if【1
flarge,h_d);
nEt!=NULL)
{hr目r 一r・咖
r.
t—net“
=【卸 r・D味t 【卸 r・D娃t=NUL L{
算法的时间复杂性主要取决于每趟获再最小值和
获得最大值的算法,由于继续调用对分算法获再每趟
最小(大)值时,每趟捧序经过的是二叉树翟结构过程.
时间复杂性为0( *1o啦 )。
3.3穗定性分析
收集K时并未考虑对于 = ,(i≠』,i>J)时
rtt ̄1.order)
2.2.2
一
nd— ()函数
NODE*b.NODE*h ) l
;NODE t. q1 pl
whdlc(1e ̄t! ̄NULL&&k't+D t—n t!=NUU
的韧始顺序,因此,收集的K可能使 ,位于 之前.故
为不稳定排序。
I口=Ie ;P。q ̄mmtl
white(p!=NULL ̄& next}=NULL)
Ii[(p ̄-data<p n r・d日 )
I P nett;q=P;
d
4实验数据
K={32,12.78,一66,35.178.98,99,23,56,57}。
n既l r’net‘;P=t—ne t}l
各趟捧序的数据变化如下:
n xt P D娃‘;q P next}p
t*
It p; nE ;}
第一趟head:32,12.78.一66,35,178.98,99,23,
56.57
r‘ne =headse
} t tl
less:12,一66,35.98.23
d【P1
 ̄
NULL&&p ̄dam>q一.d咖)
next=NULL;p—ne t=h 一 ; =口;
large:32,78,178,99,56,57
ord :一66.178
第二趟head:32,78.99,56,57,12.35,98,23
2 2.3
喇
lN0∞
n 一 ̄rge()函数
.NODE* )
・
l郾:32.56,12.35,23
large:78,99,57.98
order:一66.12,99,178
find—large(NODE
・ -*
wliIf hr目e—neIt!=NULL&&I ge 口强 —
D味t!=NULL】
第兰趟head:78,57.98,32.56.35.23
lem:57.32,35.23
hrge:78,98.56
order:一66,12.23.98.99,178
tffp=r.mI;
Iq=1 ;P=q—n ”
wh ̄e(口!=NULL&&F'- ̄tl=NULL)
}dfp一.山 > D自 da扭)
It=p—D {q=p;p—nen t ̄
—1曩麓蘩蠹襄鬣警舞释…了
维普资讯
2002年第2期 微机发展
文章编号:1005—3751(2002)02—0057—04
基于OpenGL的复杂嗑武的纹理映射
Texture Mapping on Complex Surface Based on OpenGL
陈利平 ,丁纪云 ,李思昆 (1.湖南建精高等专科学校计算机系,湖南衡阳421008;2.湖南轻工业
专科学校计算机系,湖南长沙410007;3.国防科技大学计算机学院,湖南长沙410073)
CHENLi ping’.DINGJi-yun .LI Si-kun (1.HunanBuildingMaterialsTrahaingSchoo1.Hengyan8HNX421008;2・
Hunan Light Indtmtrv Training School,Changsha HNX 410007;3 Nationa]Univ of Defense Teeh.,Char ̄ha HNX
410073.China)
擅要:介绍利用OpenGL和Vistud C ’6.0进行复杂曲面的
机图形学的一十重要研究方向。当前的方法一般分为
纹理映射。利用解二攻椭圆偏散分方程的方法,得到任意曲
面到平面的菸形映射。此方法可 自动分配纹理坐标到复杂
的投有起伏的曲面.有豉地克服复杂曲面的自动纹理映射的
变形+避免了纹理扰动。
关t调:OpenGL;纹理映射;表面参数化;有限元;共形几何
ABSTRACE:Tk p8 kxtr ̄
q
兰类:基于几何造量、基于固像绘髑及基于几何和霉像
混合。基于几何造型的方法通常利用造型软件(如
3DMAX、AutoCAD等)手工搭建模型.特点是工作量
大,不逼真;基于图像绘制方法的场景模型由场景的一
恤m出 日蛳W 咖 嘲
础m
曲
个图像集合和与之对应的探度映射组成.特点是存储
量大、交互性羞;基于几何和图像的方法通常用纹理映
andVisu ̄C’ .In dismetho ̄口∞啦
isobr ̄ed m ̄thodd v吨B second 出p 删
a§由∞t目
∞一
be
射n】技术.特点是交互性、逼真性好。本文在相应纹理
映射技术的基础上.给出了基于共形几何的纹理映射
方法。利用求二砍椭圆偏傲分方程的解来得到曲面与
平面的共形映射.可自动分配纹理坐标到复杂的段有
mtial equa ̄oa(PDE).1kme ̄cdmay 衄m
ordinatesto n咖
ed衄
a
Ⅶ 咖SlZa'ac ̄s Afmlteehmmtm ̄thod锄
map眦technique a trlangu ̄ed酽响础
the rn曲
dE茸 两∞d
surface 戡.may eH ̄ivdy 呵
n ng and州
I d∞m
I肚
起伏的曲面,有技地克服复杂曲面的自动纹理姨射的
变形.避免纹理扰动,很好地解决了纹理的自动魄射。
砒峨d the DbIem d hl ̄diag
KEYWORI ̄:OpenGL:Texture Mapping;Sudace Par n毗ea・
z ̄tiort;Fi te E]emems;Con[0r【Ⅱ Geometry
2 OpenGL简述
中蕾升娄号:TP301 6:TP391 41
1 l言
文献标讯码:A
OpenGL[ (0*n Graphics Library)是SGI公司开
发的一个非常优秀的开放式、可独立于操作系统和硬
件环境的三维图形软件库,早期主要应用在专业的图
如侗真宴地在计算机中表达现实世界一直是计算
形工作站上。近几年随着微机硬件性能的显著提高.
配合32位操作系统的出现.使得微机整体性能已经接
近或超过了早期的工作站水平.因此.现在可以在微机
[收幡日期】2001—05一l5
[作者筒开】昨利平‘lq66一).女.胡南整域人.讲师.理为冒睹科太
什算机学院研究学者.研究方向:计算机辅助设计和直拙现宴;丁纪云
(196,一).女.四川成都凡.讲师.理为国防科大计算机学院研究学者.
上方便地实现OpenGL的应用。由于其开放性和高度
可重用性,目前已成为高性能图形和交互式视景处理
的工业标准.可在Windows 95/98,windows NT,Mac.
研究方向:计算机辅助援计和虚拟现实;卒思昆(1941--).男.山市青
岛^.教授.博士生寻师.主蔓研究方向:什算机辅助援计和直拟理宴。
os/2及Unix上应用。在实际应用中.很多优秀的软
178
第四趟head:78,56.57,32,351e ̄:56,32
large:78,57.35
order:一66,12.23,32.78,98.99,178
第六越head:56
1ess:56
第五趟head:57.35,56
less:35
large:57.56
large=空
order:一66,12,23.32,35.56,57,78,98
99,178
order:一66.12,23.32,35.57,78.98,99
捧序结柬。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1714446136a2448034.html
评论列表(0条)