陣列中奇偶元素分離演算法

2021-07-23 16:34:13 字數 993 閱讀 2678

已知陣列a[n]的元素型別為int。設計演算法將其調整為左右兩部分,左邊所有元素為奇數,右邊所有元素為偶數,並要求演算法的時間複雜度為o(n)。

@zyt

#include

/****

****

****

****

****

***交換分割陣列:

頭指標、尾指標定位

當左指標《右指標時

情況1:(奇數-偶數)0-1對

left++;right--;break;

情況2:(偶數-奇數)1-0對

swap;

left++;right--;break;

情況3:(偶數-偶數)1-1對

right--;break;

情況4:(奇數-奇數)0-0對

left++;break;

****

****

****

****

****

****

****

****

**/void swap(int

*x, int

*y)int judgepair(int a, int b)

int iseven(int n)//isodd

void dividearray(int* a, int

length)

}}int main()

; for (int i = 0; i != 10; ++i)

printf("pre: %d\n", array[i]);

printf("-----------\n");

dividearray(array, 10);

for (int i = 0; i != 10; ++i)

printf("cur: %d\n", array[i]);

return

0;}

陣列元素奇偶排序程式中的死迴圈引起的思考

有一陣列 a 8 對該陣列進行排序使得奇數全部在偶數的前面,並且不可以引進分配新的陣列空間。看到這樣的題目,也許會覺得很簡單,因為題目的目的很明確,只要將奇數全部移到偶數的前面即可,而奇數與奇數之間 偶數與偶數之間都不要求順序。最開始我想到了如下 void sort one int a,int le...

演算法總結 陣列相關 陣列中找特定元素相關

本次總結在陣列中查詢特定的元素。碰到的面試題目主要包括 題目的意思很明顯,1001個數字中只有乙個數字出現了兩次,其餘的都是一次。並且不缺少任何數字。那麼找到這個數字,我們可以有很多思路 思路a 求和,最簡單也最容易想出來的方法 1 2 3 4 1000的和與陣列的和求差,差的結果就是這個數字,缺點...

搞定演算法 陣列的奇偶位置問題

一起交流秋招面試經驗,可獲得博主的秋招簡歷和複習筆記。題目 給定乙個整型陣列,請在原地調整這個陣列,保證要麼偶數字置上都是偶數,或者奇數字置上都是奇數。要求 時間複雜度 o n 額外空間複雜度 o 1 下面的 中,將最後乙個元素作為發貨點,根據自己值的奇偶性和當前陣列 odd 和 even 指標指向...