1. 程式人生 > >陣列中奇數在前半部分,偶數在後半部分

陣列中奇數在前半部分,偶數在後半部分

1.陣列中所有的奇數位於陣列的前半部分,所有偶數位於陣列的後半部分。

實現一個函式,來調整該陣列中數字的順序使得

#include <stdio.h>  
void Adjust(int arr[],int len)  
{  
    int i, j;  
    for (i = 0; i < len; i++)     //遍歷陣列 
    {  
        if ((arr[i]%2)==0)     //判讀奇偶 
            for (j = i + 1; j < len; j++)    //從偶數所在位置向陣列末尾掃描 
            {  
                int
temp; if ((arr[j] % 2) == 1) { temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; break; } } } } int main() { int i; int arr[] = { 1
, 10,3, 5, 7, 9, 2, 4, 6, 8, 11 }; Adjust(arr, sizeof(arr) / sizeof(arr[0])); for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) { printf("%3d", arr[i]); } printf("\n"); return 0; }

2.楊氏矩陣查詢數字

有一個二維陣列.
陣列的每行從左到右是遞增的,每列從上到下是遞增的.
在這樣的陣列中查詢一個數字是否存在。
時間複雜度小於O(N);
陣列:
1 2 3
2 3 4
3 4 5

1 3 4
2 4 5
4 5 6

//楊氏矩陣查詢 方法二 分治法(二分查詢)

#include "stdio.h"  
#define ROW 4  
#define COL 4  
static int arr[ROW][COL]={{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};  

bool Young(int arr[][COL], int target)  
{  
    int i = 0, j = COL-1;  
    int var = arr[i][j];  
    while(true)  
        if(var==target)  
            return true;  
        else if (var<target && i<ROW-1)  
            var = arr[++i][j];  
        else if(var>target && j>0)  
            var = arr[i][--j];  
        else  
            return false;  
}  
int main()  
{  
    if( Young(arr,4) )  
        printf("%s", "I found it!");  
    else  
        printf("%s", "Sorry. Item doesn't exist!");  
    int i;  
    scanf("%d",&i);  
}