09 Sept 2026Go / Python / TypeScriptEasy

Sort Array By Parity

Reorder an array so all even values appear before all odd values.

Partition in place with pointers from both ends, swapping an odd left value with an even right value.

complexity

O(n) time and O(1) extra space.

solution files

  • Go sort-array-by-parity/solution.go
  • Python sort-array-by-parity/solution.py
  • TypeScript sort-array-by-parity/solution.ts

Solution files

Gosort-array-by-parity/solution.go
package main

func sortArrayByParity(nums []int) []int {
	left, right := 0, len(nums)-1
	for left < right {
		for left < right && nums[left]%2 == 0 {
			left++
		}
		for left < right && nums[right]%2 != 0 {
			right--
		}
		nums[left], nums[right] = nums[right], nums[left]
	}
	return nums
}
Pythonsort-array-by-parity/solution.py
class Solution:
    def sortArrayByParity(self, nums: list[int]) -> list[int]:
        left, right = class="syntax-number">0, len(nums) - class="syntax-number">1
        while left < right:
            while left < right and nums[left] % class="syntax-number">2 == class="syntax-number">0: left += class="syntax-number">1
            while left < right and nums[right] % class="syntax-number">2: right -= class="syntax-number">1
            nums[left], nums[right] = nums[right], nums[left]
        return nums
TypeScriptsort-array-by-parity/solution.ts
function sortArrayByParity(nums: number[]): number[] {
  let left = class="syntax-number">0;
  let right = nums.length - class="syntax-number">1;
  while (left < right) { while (left < right && nums[left] % class="syntax-number">2 === class="syntax-number">0) left += class="syntax-number">1; while (left < right && nums[right] % class="syntax-number">2 !== class="syntax-number">0) right -= class="syntax-number">1; [nums[left], nums[right]] = [nums[right], nums[left]]; }
  return nums;
}