1. 程式人生 > >給定一個數組,根據陣列名求陣列的長度

給定一個數組,根據陣列名求陣列的長度

題目:給定一個數組名字,如何根據陣列名求陣列的長度?

本題來自於一個同學筆試題,筆試中是實現一個氣泡排序,但是排序的引數只有一個數組名,沒有陣列中元素的個數;void bubbleSort(int a[]);

思路:要先實現這個氣泡排序,首先要獲取這個陣列中陣列元素的個數。然後對陣列排序,下面說一下如何根據陣列名獲取一個數組長度。

首先我們如果在區域性作用域中定義一個數組的話,獲取陣列中元素個數是很方便的:

int main(int argc, char * argv[])
 {
	int a[11];
	for (int i = 0; i < 10; ++i)
	{
		a[i] = i;
	}
	int len = 0;
len = (sizeof(array) / sizeof(array[0]));
	cout << len << endl;
	return 0;
}
//但是將陣列名作為引數傳遞到一個函式中,這樣這個陣列名就退化成了一個簡單的指標int*,此時sizoef(a)的值為4,顯然這種方法不能獲取陣列的長度。

但在C++中可以使用模板技術可以實現:

template <class T>
int getArrayLen(T& array)
{
	return (sizeof(array) / sizeof(array[0]));
}

int main(int argc, char * argv[])
 {
	int a[11];
	for (int i = 0; i < 10; ++i)
	{
		a[i] = i;
	}
	int len = 0;
	cout << getArrayLen(a) << endl;
	return 0;
}
//在C語言中可以使用巨集定義來求:
#define getSize(a, len){len = (sizeof(a) / sizeof(a[0]));}


相關推薦

給定個數根據陣列陣列長度

題目:給定一個數組名字,如何根據陣列名求陣列的長度? 本題來自於一個同學筆試題,筆試中是實現一個氣泡排序,但是排序的引數只有一個數組名,沒有陣列中元素的個數;void bubbleSort(int a

有自己的程式碼--題目:給定一個數組,裡面全是正整數。數字大小表示這步最多可以向後移動幾個節點。總是從陣列第一個元素開始移動。問如何移動可以以最少步數移動到最後一個節點。

原文:https://yq.aliyun.com/articles/547799 描述: 題目:給定一個數組,裡面全是正整數。數字大小表示這一步最多可以向後移動幾個節點。總是從陣列第一個元素開始移動。問如何移動,可以以最少步數移動到最後一個節點。 例如:[3,4,2

給定個數陣列中有正有負出連續陣列中和值最大的數(陣列長度大於等於1)

刷牛牛客遇到的題,想給出完整而又簡潔的function(python解答,但是關鍵是思想,語言不是問題啦)1.給定一個數組,陣列中有正有負,求出連續(全部都是正的時候,所有值累加就是最大值)(全部為負的時候,max(array)就是我們想要的)# -*- coding:utf

給定個數返回最大子陣列的累加和並且返回該子陣列

給定一個數組Arr,返回子陣列的最大累加和 例如 arr[] = {1,-2,3,5,-2,6,-1};所有子陣列中,[3,5,-2,6] 可以累加出最大和12 函式在設計的時候,應該考慮傳入的陣列Arr,同時要有一個傳出陣列,返回值會最大累加和,為整數 以下是程式碼

給定個數找出陣列缺少的最小的正整數

題目使這樣的:請設計一個高效演算法,查詢陣列中未出現的最小正整數。 給定一個整數陣列A,請返回陣列中未出現的最小正整數。 測試樣例: [-1,2,3,4] 返回1 一看到這個題目我想到的是用另外的一個數組B,長度為A的長度+1,來儲存遍歷陣列A的數的值。 if(A[i]

給定個數按序排列陣列找出若干個數使得這若干個數字的和與M最為接近(揹包問題)

思路:對於陣列中的每一個數,觀察它們取或不取對最後結果的影響。並且記錄下若干數字的和與M的差的絕對值最小時所取到的若干數字。 /*  * 微軟100, 9月28題, 輸入和接近M  * sum 即為M值  * num排序的陣列  * len陣列長度  * vec所取到若干數

給定個數陣列元素的排列和組合——Java實現

1. 思路 組合數C(n,m)和全排列A(n,n)可以通過遞迴的方式,直接實現。 而A(n,m)則可以通過組合數和全排列間接求出A(n,m)=C(n,m)*A(m,m),即對得到的組合數中的每個元素進行全排列 2. Java實現 package com.zfy.test

給定個數找出這個和最大的連續子陣列的和

將這個連續子陣列分為兩部分,一個是字首,一個是後一個元素,要使這個連續子陣列最大,那麼它的字首肯定不能為負,不然這個字首對即將加上的值就無意義,用一個max記錄最大值,每次當前綴加上後一個元素的時候判斷和是否大於max,大於則更新max,再判斷和是否小於0,小於0則將字首更

面試題:給定個數陣列中只包含0和1。請找到一個最長的子序列其中0和1的數量是相同的

這個題目,看起來比較簡單,一些同學可能認為題目的描述符合動態規劃的特徵,然後就開始用動態規劃解,努力找狀態轉移方程。這些同學的感覺,是很正確的。但,找狀態轉移方程,我們要對原來的陣列進行變換一下。 原來是0和1的串,我們將0都換為-1。這樣題目目標就變成,找到一個最長的子串,子串數字和是0。設原陣列為A

給定個數陣列中有正負數出所有字陣列中和值最大的值。

/**當我們加上一個正數時,和會增加;當我們加上一個負數時,和會減少。如果當前得到的和是個負數,那麼這個和在接下來的累加中應該拋棄並重新清零, 不然的話這個負數將會減少接下來的和 */ public static int maxSum(int[] a) { int

題目三:給定個數值可以為正、負和0請返回累加和為給定值k的最長子陣列長度

import java.util.HashMap; /** * * 2、給定一個數組,值可以為正、負和0,請返回累加和為給定值k的最長子陣列長度。 * 咱們可以反推,比如:1- 100,陣列和為1000. * 要求最長和為300的子陣列,我可以反著求第一

題目四:給定個數值可以為正、負和0請返回累加和小於等於k的最長子陣列長度。 時間複雜度:O(n)

import java.util.HashMap; /** * * 3、給定一個數組,值可以為正、負和0,請返回累加和小於等於k的最長子陣列長度。 時間複雜度:O(n) * * 這裡需要分為兩步,第一步是獲取,以每個位置開頭最小和的長度。第二步,從0到N逐

給定個數找出其中出現奇數次的元素

package com.yzcl.test; public class JiShu { public static void main(String[] args) { //給定一個含有n個元素的整型陣列a,例如{1,1,2,4,3,3,1},找出其中出現奇數次的元素,並列印,輸出:1,

給定個數其中只有個數出現別的數都出現3次找出這個數(go)

1.思路 用兩個數one=0、two=0分別記錄bits位上1出現的次數,如果一個數出現一次,則one等於這個數,two=0;  如果一個數出現兩次,則two等於這個數, one等於0;如果一個數出現第三次,則one = 0, two = 0 ,three等於這個數。 我們以陣

給定個數請倒序輸出每個數

題目描述: 給定一個數組, int[] abc = { 20, 90, 48, 92}; 請倒序輸出每一個數。 即,輸出 92 48 90 20 c #include<stdio.h> int main() {     int a[4]={20,90,48

前端演算法:給定個數寫一個函式將所有0的移動到它的末尾同時保持非零元素的相對順序(移動零)

給定一個數組nums,寫一個函式將所有0的移動到它的末尾,同時保持非零元素的相對順序。 例: 輸入: [0,1,0,3,12] 輸出: [1,3,12,0,0] 注意: 您必須在不製作陣列副本的情況下就地執行此操作。 最小化操作總數。 <script>

給定個數如何構造一個二叉排序樹(ADL)

                                              構造二叉排序樹 構造一棵二叉排序樹就是依次輸入資料元素,將它們插入到二叉排序樹中的適當位置上的過程。具體過程是:每次讀入一個元素,就建立一個新的節點,若二叉排序樹非空,則將新節點的值

【演算法】給定個數除了個數出現1次之外其餘數都出現3次輸出出現次的那個數

給定一個數組,除了一個數出現1次之外,其餘數都出現3次。找出出現一次的數。如:{1, 2, 1, 2, 1, 2, 7},找出7.格式:第一行輸入一個數n,代表陣列的長度,接下來一行輸入陣列A[n],(輸入的陣列必須滿足問題描述的要求),最後輸出只出現一次的數。

給定個數其中只有個數出現別的數都出現3次找出這個數

題目描述 給定一個數組,其中只有一個數x出現一次,別的數都出現3次,找出這個數x。(線性時間複雜度) 思路 這個用異或不可以。 可以設定一個長度為32的int陣列。統計每位上出現1的次數,如果次數能被3整除,說明x該位上為0,否則為1 java程式碼實

給定個數其某個子區間該區間和最大

#include<iostream> #include<vector> #include<iterator> #include<type_traits> #include<ctime> #include<ran