随手写了个快速排序思想的python代码,但是发现并不能保证相对位置一致
# -*- coding:utf-8 -*-
class Solution:
def reOrderArray(array):
# write code here
left = 0
right = len(array) - 1
while (left < right):
while (left < right) and (array[left]%2 == 1):
left += 1
array[left],array[right] = array[right],array[left]
while (left < right) and (array[right]%2 == 0):
right -= 1
array[right],array[left] = array[left],array[right]
#array[right] = array[left]
return array
又想了想,保证相对位置一样,怕是要按顺序都数组,一个一个的处理元素:
# -*- coding:utf-8 -*-
class Solution:
def reOrderArray(self, array):
# write code here
tmp=[]
count = 0
for i in array:
if (i%2 == 0):
tmp.append(i)
else:
tmp.insert(count,i)
count += 1
return tmp
用java实现好像不能这么写,找了个插入排序的思想的解法:
public class Solution {
public void reOrderArray(int [] array) {
int m = array.length;
int k = 0;//排好序的奇数个数
for (int i = 0; i < m; i++) {
if (array[i] % 2 == 1) {
int j = i;
while (j > k) {//这段代码就是一直把第j个数和前一个数交换,直到它成为第k+1个数
int tmp = array[j];
array[j] = array[j-1];
array[j-1] = tmp;
j--;
}
k++;//排好序的数列加1
}
}
}
}