Algorithm 将冒泡排序更改为插入排序,并对迭代进行少量更改
我相信以下伪代码适用于冒泡排序算法:Algorithm 将冒泡排序更改为插入排序,并对迭代进行少量更改,algorithm,pseudocode,bubble-sort,insertion-sort,Algorithm,Pseudocode,Bubble Sort,Insertion Sort,我相信以下伪代码适用于冒泡排序算法: L = [8, 6, 7, 1, 5, 9, 4, 3, 10, 2] // 10 items FOR I = 1 TO 9 FOR J = 1 TO 10 - I IF L[J] > L[J + 1] THEN TEMP = L[J] L[J] = L[J + 1] L[J + 1] = TEMP ENDIF ENDFOR J EN
L = [8, 6, 7, 1, 5, 9, 4, 3, 10, 2] // 10 items
FOR I = 1 TO 9
FOR J = 1 TO 10 - I
IF L[J] > L[J + 1] THEN
TEMP = L[J]
L[J] = L[J + 1]
L[J + 1] = TEMP
ENDIF
ENDFOR J
ENDFOR I
OUTPUT L
如果我改变I和J的迭代模式,如下面的例子,我是否将算法转换为插入排序?我想是的,但我很惊讶它会如此简单,我看到的各种实现往往差异更大
L = [8, 6, 7, 1, 5, 9, 4, 3, 10, 2] // 10 items
FOR I = 1 TO 9
FOR J = 9 TO I STEP -1
IF L[J] > L[J + 1] THEN
TEMP = L[J]
L[J] = L[J + 1]
L[J + 1] = TEMP
ENDIF
ENDFOR J
ENDFOR I
OUTPUT L
第二个算法是冒泡排序的另一个版本。它不会在每次传递时将最大值移向数组的末尾,而是将最小值移向数组的开头。在下图中,第一行是未排序的数组,随后的每一行是执行一次内部循环后数组的状态。气泡排序的两个特征值得注意:
那么,为了获得插入排序,第一个版本的最小修改是什么呢?谢谢。现在我可以看到,我需要从外循环计数器迭代到内循环中数组的开头。