1. 程式人生 > >如何使陣列中的奇數全部都位於偶數前面以及在楊氏矩陣中尋找一個數

如何使陣列中的奇數全部都位於偶數前面以及在楊氏矩陣中尋找一個數

1.調整陣列使奇數全部都位於偶數前面。 

#include<stdio.h>
#define ROW 100
void JiOuSort(int arr[ROW],int count)
{
    int count1 = 0;
    int i = 0,j=0;
    int temp = 0;
    for (i = 0; i < count; i++)
    {
        if (arr[i] % 2 == 1)
        {
            count1++;
        }
    }
    for (i = 0; i < count1; i++)
    {
        if (arr[i] % 2 == 0)
        {
            for (j = count1; j < count; j++)
            {
                if (arr[j] % 2 == 1)
                {
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                    break;
                }
            }
        }
    }
    for (int i = 0; i < count; i++)
    {
        printf("%d ", arr[i]);
    }
}
 
int main()
{
    int i = 0;
    int arr[] = { 2,4,6,8,10,1,3,5,7,9 };
    int count = sizeof(arr) / sizeof(arr[0]);
    JiOuSort(arr,count);
    system("pause");
    return 0;
}


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

#include<stdio.h>
#define ROW 5
#define COL 5
void Seek(int arr[ROW][COL],int n)
{
    int left = 0;
    int right = ROW - 1;
    while ((left < ROW) && (right >= 0))
    {
        if (arr[left][right] < n)
        {
            left++;
        }
        else if (arr[left][right] > n)
        {
            right--;
        }
        else if (arr[left][right] == n)
        {
            printf("找到了\n");
            break;
        }
    }
    if ((left >= ROW) || (right < 0))
    {
        printf("沒找到\n");
    }
}
 
int main()
{
    int n = 0;
    int arr[ROW][COL] = { {1,2,3,5,6},
                          {4,5,6,7,8},
                          {7,8,9,10,12}, 
                          {9,10,12,13,14},
                          {12,23,45,56,78 } };
    scanf("%d", &n);
    Seek(arr,n);
    system("pause");
    return 0;
}