·选择排序有什么缺陷? 多余的交换 ·如何修改?-P155 1)定义一个标记变量k-标记本轮比较中最小值a[k的位置 -假设初始元素a[U最小,将其下标i作为标记变量k的初始值。 2)让后面的所有元素与k所标记位置的最小值a[k]做比较, 如果后面的某个元素比a[k还小,将该元素的下标赋给标记 变量k。 3)当内循环结束之后,如果标记变量k不再指向初始元素 a[叮,说明最小值不在初始位置a叮-让初始元素a[叮与标记变 量k所标记位置的元素a[k]做一次交换,否则不需交换
• 选择排序有什么缺陷? -多余的交换 • 如何修改?- P155 1)定义一个标记变量 k -标记本轮比较中最小值a[k]的位置 -假设初始元素a[i]最小,将其下标i作为标记变量 k 的初始值。 2)让后面的所有元素与 k 所标记位置的最小值a[k]做比较, 如果后面的某个元素比a[k]还小,将该元素的下标赋给标记 变量k。 3)当内循环结束之后,如果标记变量 k 不再指向初始元素 a[i],说明最小值不在初始位置a[i]-让初始元素a[i]与标记变 量 k 所标记位置的元素a[k]做一次交换,否则不需交换
K与- k i=0初始:[13 3865 97 76 49 27] i=1 一趟:13【27 65 97 76 49 381 ↑ 个 i=2 二趟:13 27 97 76 49 改进的选择排序图示效果 I65 381 个 i=3 三趟: 13 27 38 [97 76 49 65] 个 i=4 四趟: 13 27 38 49 [76 97 65] i=5五趟:1327 38 49 65 97 761 —从小到大 i=6 六趟:13273849 65 76[97]
初始:[ 49 38 65 97 76 13 27 ] j i = 0 13 49 i = 1 一趟: 13 [ 38 27 65 97 76 49 27 ] 38 二趟: 13 27 [65 97 76 49 38 ] 三趟: 13 27 38 [97 76 49 65 ] 四趟: 13 27 38 49 [76 97 65 ] 五趟: 13 27 38 49 65 [97 76 ] 六趟: 13 27 38 49 65 76 [97 ] k k k k j j j j j j j j j j k 改 进 的 选 择 排 序 图 示 效 果 — 从 小 到 大 i = 3 i = 2 i = 6 i = 5 i = 4 a[k]与 a[i+1]-a[n-1]比较 :