全国青少年信息学奥林匹克联赛排序算法一、插入排序(InsertionSort)1.基本思想:每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置,使数列依然有序;直到待排序数据元素全部插入完为止。2.排序过程:【示例】:[初始关键字][49]38659776132749J=2(38)[3849]659776132749J=3(65)[384965]9776132749J=4(97)[38496597]76132749J=5(76)[3849657697]132749J=6(13)[133849657697]2749J=7(27)[13273849657697]49J=8(49)[1327384949657697]ProcedureInsertSort(VarR:FileType);//对R[1..N]按递增序进行插入排序,R[0]是监视哨//BeginforI:=2ToNDo//依次插入R[2],...,R[n]//beginR[0]:=R[I];J:=I-1;WhileR[0]IThen//交换R[I]和R[K]//beginTemp:=R[I];R[I]:=R[K];R[K]:=Temp;end;endEnd.//SelectSort//三、冒泡排序(BubbleSort)1.基本思想:两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止。2.排序过程:设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上"漂浮",如此反复进行,直至最后任何两个气泡都是轻者在上,重者在下为止。【示例】:49131313131313133849272727272727653849383838383897653849494949497697654949494949137697656565656527277697767676764949497697979797ProcedureBubbleSort(VarR:FileType)//从下往上扫描的起泡排序//BeginForI:=1ToN-1Do//做N-1趟排序//beginNoSwap:=True;//置未排序的标志//ForJ:=N-1DownTo1Do//从底部往上扫描//beginIfR[J+1]