输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
因为限定了相对位置不变,所以需要一个稳定的排序方法。
冒泡:
def reOrderArray(array):
if array == None or len(array) == 0 or len(array) == 1:
return array
for i in range(len(array) - 1): #需要比较的次数比数组长度少1
boola = Flase #纪录这一趟是否有转换
for j in range(len(array) - i - 1): #如第0趟只需要到达倒数第二个数
if array[j]%2 == 0 and array[j+1]%2 == 1:
array[j], array[j+1] = array[j+1], array[j]
boola = True
if boola == False:
break
return array
插入排序:
def reOrderArray(array):
if array == None or len(array) == 0 or len(array) == 1:
return array
for i in range(1, len(array)): #第0个数已放好,后面所有数往前插入
current = array[i] #要插入的数
preIndex = i - 1
while preIndex >= 0 and current%2 ==1 and array[preIndex]%2 == 0:
array[preIndex + 1] == array[preIndex]
preIndex -= 1
array[preIndex + 1] = current
return array