shakerSort(A, N): left ← 0 right ← N-1 while True: // 向前互換處理 last ← left for j ← left+1 to right: if A[j-1] > A[j]: swap(A[j-1], A[j]) last ← j - 1 // 更新最後互換的位置 right ← last; // 縮小後面未排序的部分 if left = right: break // 從後面互換的過程 last ← right for j ← right downto left+1: if A[j-1] > A[j]: swap(A[j-1], A[j]) last ← j // 更新最後互換的位置 left ← last; // 縮小前面未排序的部分 if left = right: break