(1)在c語言的被呼叫函式中,沒有辦法求出陣列實參的大小,因此需要顯示傳遞array_length引數。詳見部落格:c語言記憶體分配時間。
(2)以o(n)的計算時間得出結果。
#include void find_2_largest(int array, int array_length, int *plargest, int *psecond_largest);
int main(void);
int largest=0;
int second_largest=0;
int array_length=sizeof(array)/sizeof(array[0]);
find_2_largest(array, array_length, &largest, &second_largest);
printf("the 2 largest number is: %d and %d.\n", largest, second_largest);
return 0;
}void find_2_largest(int array, int array_length, int *plargest, int *psecond_largest)else
for(int i=2; i*plargest)else if(array[i]>*psecond_largest)
}}
氣泡排序和查詢陣列中最大的數及查詢兩個數中最大的數
1 顯示效果 2 include int main printf 兩個數中最大的數是 d a getchar return 0 1 顯示效果 include 列印陣列 void printarray int a,int len 選出最到的數並移動到陣列的最後 void movemaxtoarraye...
求陣列中最大的K個數
最容易想到的就是迴圈遍歷陣列k次求出最大的k個數。這個演算法有許多的缺點 第一點就是速度不夠,它的時間複雜度中o k n 當陣列很大時,不能全部載入到記憶體中,這個演算法就不可行了。這道題目還有兩種比較優的解法 1.我們可以利用快速排序中的思想,快速排序每次都把資料分為兩個部分,第一部分大於某個數,...
查詢陣列中最小k個數
思路 可採用大頂堆來實現 維護乙個規模為k的大頂堆。從前往後掃瞄陣列元素 若大頂堆的size小於k,則把當前元素插入大頂堆中 若小於k,若當前元素小於堆頂元素,則刪除堆頂元素,插入當前元素。考慮到從頭實現乙個大頂堆比較麻煩,這裡使用treeset容器,它提供有序的set。treeset底層實際使用的...