★快速排序 ◆基本思想:通过一趟排序,将待排序记录分割成独立 的两部分,其中一部分记录的关键字均比另一部分记 录的关键字小,则可分别对这两部分记录冼行排序 以达到整个序列有序 ◇排序过程:对「[s…中记录进行一趟快速排序,附 设两个指针,设枢轴记录rp=[s],X=rp.key ●初始时令=S 首先从j所指位置向前搜索第一个关键字小于Ⅻ的记录,并和[p 交换 ●再从所指位置起向后搜索,找到第一个关键字大于Ⅺ的记录, 和p交换 ●重复上述两步,直至|为止 再分别对两个子序列进行快速排序,直到每个子序列只含有 一个记录为止
快速排序 ❖基本思想:通过一趟排序,将待排序记录分割成独立 的两部分,其中一部分记录的关键字均比另一部分记 录的关键字小,则可分别对这两部分记录进行排序, 以达到整个序列有序 ❖排序过程:对r[s……t]中记录进行一趟快速排序,附 设两个指针i和j,设枢轴记录rp=r[s],x=rp.key ⚫初始时令i=s,j=t ⚫首先从j所指位置向前搜索第一个关键字小于x的记录,并和rp 交换 ⚫再从i所指位置起向后搜索,找到第一个关键字大于x的记录, 和rp交换 ⚫重复上述两步,直至i==j为止 ⚫再分别对两个子序列进行快速排序,直到每个子序列只含有 一个记录为止
例初始关键字:273813 4976976550 完成一趟排序:(273813)49(76976550) 分别进行快速排序:(13)27(38)49(5065)76(97) 快速排序结束:1327384950657697
例 初始关键字: 49 38 65 97 76 13 27 50 i j x j 完成一趟排序: ( 27 38 13) 49 (76 97 65 50) 分别进行快速排序: ( 13) 27 (38) 49 (50 65) 76 (97) 快速排序结束: 13 27 38 49 50 65 76 97 27 49 i i j j i 49 65 j 13 49 i 49 97 i j
◆算法描述 Ch8 5 txt 今算法评价 ●时间复杂度 ◆最好情况(每次总是选到中间值作枢轴)T(n)=O( nlog2n) ◆最坏情况(每次总是选到最小或最大元素作枢轴) T(n)=O(n2) T(n)=O(n2) Ch85.c
❖算法描述 ❖算法评价 ⚫时间复杂度 ◆最好情况(每次总是选到中间值作枢轴)T(n)=O(nlog2n) ◆最坏情况(每次总是选到最小或最大元素作枢轴) T(n)=O(n²) T(n)=O(n²) Ch8_5.c
§9.2插入排序 ★直接插入排序 今排序过程:整个排序过程为η-1趟插入,即先将序列 中第1个记录看成是一个有序子序列,然后从第2个记 录开始,逐个进行插入,直至整个序列有序 ◆算法描述 CH8 1.txt
§9.2 插入排序 直接插入排序 ❖排序过程:整个排序过程为n-1趟插入,即先将序列 中第1个记录看成是一个有序子序列,然后从第2个记 录开始,逐个进行插入,直至整个序列有序 ❖算法描述
例 1(49386597761327 Ch8 1.trt i=238(3849)6597761327 i=365(384965)97761327 497(38496597)761327 i=576(3849657697)1327 613(133849657697)27 i=727(13273849657697 排序结果:(13273849657697
例 49 38 65 97 76 13 27 i=2 38 (38 49) 65 97 76 13 27 i=3 65 (38 49 65) 97 76 13 27 i=4 97 (38 49 65 97) 76 13 27 i=5 76 (38 49 65 76 97) 13 27 i=6 13 (13 38 49 65 76 97) 27 i=1 ( ) i=7 (13 38 49 65 76 97) 27 27 j j j j j j 27 38 49 65 76 97 排序结果:(13 27 38 49 65 76 97)