排序&哈希&查找直接插入排序过程示例初始关键字序列3412492831525149*123456780监视哨i=21234492831525149*12i=31234492831525149*49i=41228344931525149*28i=51228313449525149*31i=61228313449525149*52i=71228313449515249*51i=8122831344949*515249*直接插入排序算法数据结构定义#defineMAXSIZE20typedefintKeytype;//定义关键字类型为整型typedefstruct{KeyTypekey;//关键字项InfoTypeotherinfo;//其他数据项}RedType;//记录类型typedefstruct{RedTyper[MAXSIZE+1];//r[0]闲置或用作哨兵intlength;//顺序表长度}SqList;//顺序表类型直接插入排序算法以顺序表作为存储结构的直接插入排序算法voidInsertSort(SqList&L){for(i=2;i<=L.ength;i++)if(L.r[i].keyL.r[j+1].key){L.r[0]=L.r[j];L.r[j]=L.r[j+1];L.r[j+1]=L.r[0];change=TRUE;}//if最好情况下,元素的比较次数为:n-1最坏情况下,交换次数为:n(n-1)/2最好情况下,元素的移动次数为:0最坏情况下,交换次数为:n(n-1)/2386597132749551234567849049pivotij快速排序中的一趟划分快速排序中的一趟划分386597132749551234567804949pivotija[j]与pivot比较,a[j]小则a[j]→a[i]快速排序中的一趟划分386597132749551234567804949pivotij快速排序中的一趟划分386597132749551234567804949pivotija[i]与pivot比较,a[i]大则a[i]→a[j];否则i增1快速排序中的一趟划分386597132749551234567804949pivotija[i]与pivot比较,a[i]大则a[i]→a[j];否则i增1快速排序中的一趟划分389713274955123456780465949pivotij快速排序中的一趟划分389713274955123456780465949pivotija[j]与pivot比较,a[j]小则a[j]→a[i];否则,利用j向前扫描快速排序中的一趟划分389713274955123456780465949pivotija[j]与pivot比较,a[j]小则a[j]→a[i];否则,利用j向前扫描快速排序中的一趟划分389713274955123456780465949pivotija[j]与pivot比较,a[j]小则a[j]→a[i];否则,利用j向前扫描快速排序中的一趟划分382797134955123456...