跳至主要內容

Leetcode 905. 按奇偶排序数组

张威小于 1 分钟数据结构与算法数组双指针

Leetcode 905. 按奇偶排序数组open in new window

题目描述:整形数组,把偶数调整到数组的左边,把奇数调整到数组的右边

void ajustArray(int arr[], int len)   // 整形数组,把偶数调整到数组的左边,把奇数调整到数组的右边
{
    int left = 0;
    int right = len - 1;
    while(left < right) {
        while(left < right && (arr[right] & 0x01) == 1) {//位操作一定加括号
            right--;
        }
        while(left < right && (arr[left] & 0x01) == 0) {
            left++;
        }
        if(left < right) {
            std::swap(arr[left],arr[right]);
            left++;
            right--;
        }

    }
}

int main() {
    int arr[10] = {0};  
    srand(time(nullptr));
    for(int i = 0; i < 10; i++) {
        arr[i] = rand()%100;
    }
    for(auto i : arr) {
        cout << i << " " ;
    }
    cout << endl;

    ajustArray(arr, 10);
    for(auto i : arr) {
        cout << i << " " ;
    }
    cout << endl;

    return 0;
} 

位操作判断奇偶性比 x%2 == 1要快,但是!!!