調整陣列使奇數全部都位於偶數前面,以及楊氏矩陣的實現
輸入一個整數陣列,實現一個函式, 來調整該陣列中數字的順序使得陣列中所有的奇數位於陣列的前半部分, 所有偶數位於陣列的後半部分。
#include<stdio.h> #include<windows.h> #include<stdlib.h>
void Sort(int *a, int sz) { int i; for (i = 0; i<sz; i++) { //判斷奇偶 if (a[i] % 2 != 0) { continue; } else { a[i] ^= a[sz]; a[sz] ^= a[i]; a[i] ^= a[sz]; sz–; i–; //注意此處i–,是因為交換後的數也要判斷奇偶 } } } int main() { int a[] = { 1, 2, 34, 4, 5, 6, 8, 9 }; int sz = sizeof(a) / sizeof(a[0]) - 1; Sort(a, sz); int i; for (i = 0; i <= sz; i++) { printf("%d “, a[i]); } printf(”\n");
system("pause");
return 0;
} //楊氏矩陣 有一個二維陣列. 陣列的每行從左到右是遞增的,每列從上到下是遞增的. 在這樣的陣列中查詢一個數字是否存在。 時間複雜度小於O(N);
陣列: 1 2 3 2 3 4 3 4 5
1 3 4 2 4 5 4 5 6
1 2 3 4 5 6 7 8 9
#include<stdio.h> #include<windows.h> int Find(int arr[4][4], int rows, int cols, int num) { int result = 0; int row = 0; int col = cols - 1; while (row < rows && col >= 0) { if (arr[row][col] == num) { result = 1; break; } else if (arr[row][col] > num) { –col; } else { ++row; } } return result; } int main() { int arr[4][4] = { { 1, 3, 5, 8 }, { 2, 4, 6, 9 }, { 4, 5, 8, 10 }, { 5, 7, 9, 11 } }; printf("%d\n", Find(arr, 4, 4, 7)); system(“pause”); return 0; }