C語言編程在楊氏數(shù)組中查找數(shù)字-創(chuàng)新互聯(lián)

題目:
楊氏矩陣(一個二維數(shù)組,數(shù)組的每行從左到右是遞增的,每列從上到下是遞增的)
在這樣的數(shù)組中查找一個數(shù)字是否存在。
要求時間復雜度小于O(N);

創(chuàng)新互聯(lián)是專業(yè)的銅梁網(wǎng)站建設(shè)公司,銅梁接單;提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行銅梁網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

主要思路:
題目要求時間復雜度度不能大于O(N),所以判斷次數(shù)必須小于遍歷一次數(shù)組次數(shù)。
所以從數(shù)組的右上角開始判斷,若當前元素大于要查找的數(shù)字,則跳過當前列查詢下一列,若當前元素小于要查找的數(shù),則跳過當前行查找下一行,直至找到或者找不到。

eg:
此處使用數(shù)組arr[3][3]={1,2,3,4,5,6,7,8,9};
1 2 3
4 5 6
7 8 9
在數(shù)組中朝查找5,首先判斷3<5,則查找范圍就變成了
4 5 6
7 8 9
再判斷6>5,則查找范圍又變?yōu)榱?br/>4 5
7 8
這時候再判斷5=5
則找到

源代碼:

#include<stdio.h>
#include<stdlib.h>
void find(int arr[][3],int *row, int *col,int key)
{
    int x = 0;
    int y = *col - 1;
   while (x <*row&&y>0)//判斷條件
    {
        if (arr[x][y] == key)//找到
        {
            *row = x;
            *col = y;
            return;
        }
        else if (arr[x][y] < key)
        {
            x++;//變換行
        }
        else
        {
            y--;//變換列
        }
    }
    *row = -1;
    *col = -1;
}
int main()
{
    int arr[3][3]= {1,2,3,4,5,6,7,8,9};
    int x=3;
    int y=3;
    int *row = &x;
    int *col = &y;
    int key=5;
    find(arr,row,col,key);
    if (*row == -1 && *col == -1)
    {
        printf("沒找到\n");
    }
    else
    {
        printf("找到了,下標為%d %d\n", *row, *col);
    }
    system("pause");
    return 0;
}

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

新聞標題:C語言編程在楊氏數(shù)組中查找數(shù)字-創(chuàng)新互聯(lián)
本文鏈接:http://muchs.cn/article48/doojep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、面包屑導航、App開發(fā)、網(wǎng)站策劃、關(guān)鍵詞優(yōu)化、網(wǎng)頁設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)