在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
生活随笔
收集整理的這篇文章主要介紹了
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目解析部分
題目中說的這個數組使我們所熟知的楊氏矩陣
拿到一道題的解題思路應該是這樣的:先看這道題中所用到的知識點,然后選用合適的類型和返回類型。先用偽代碼來將整體思路屢清楚,再用代碼去代替
偽代碼部分
假設這個要找的整數為falg
代碼部分
#include<stdio.h>int find(int array[10][10], int cows, int columns,const int num ) {int row = 0;//定義行數int column = columns - 1;//定義列數 這時形參columns是列數,所以應該-1才是最后一列的坐標int ret = -1;//定義一個返回值, 初始值為-1:如果以下代碼沒有找到這個數,就返回-1,找到了就返回1while (row <= cows && column >= 0){if (num == array[row][column]){ret = 1;break;}//用楊氏矩陣右上角的數值于num進行比較,如果想等,將1賦給ret,然后結束循環,否則進行下一步操作if (num > array[row][column]){row++;column = columns - 1;//每次從下一行查找時,都要從最右邊的整數開始//如果不從最右邊開始,可能flag就在array[row][column]的右邊(可以自行測試)continue;}//如果右上角這個數值小于num,由于這個數是該行最大值,則跳到下一行進行比較,跳出此次循環,進行下一次循環if (num < array[row][column]){column--;continue;}//如果右上角這個數值大于num,則跳到前一列進行比較,跳出此次循環,進行下一次循環}return ret;}int main() {int arr[5][8] = { { 1, 2, 3, 4, 5 }, { 2, 4, 5, 6, 7 }, { 3, 4, 5, 6, 7 } };int num = 11;int row = sizeof(arr) / sizeof(arr[0]);int column = sizeof(arr[0]) / sizeof(int);int ret = 0;ret = find(arr, row, column, num);if (ret == 1){printf("找到了\n");}else{printf("沒有找到!\n");}return 0; }總結
以上是生活随笔為你收集整理的在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 记录遇到的Python陷阱和注意点
- 下一篇: 《 FRIDA系列文章 》