目錄
創(chuàng)新互聯(lián)公司始終堅持【策劃先行,效果至上】的經(jīng)營理念,通過多達十余年累計超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的全網(wǎng)整合營銷推廣解決方案,現(xiàn)已廣泛運用于各行各業(yè)的客戶,其中包括:成都公路鉆孔機等企業(yè),備受客戶贊譽。一、?fmax函數(shù)
1. 解析fmax函數(shù)
2. 運用fmax函數(shù)
?小總結(jié):
二、fdim函數(shù)
1.? 解析fdim函數(shù)
2. 運用fdim函數(shù)
三、qsort函數(shù)💯
1. 解析qsort函數(shù)
2. 運用qsort函數(shù)?
3. 深入挖掘qsort?
4.qsort實戰(zhàn)
Summery💐💐💐
fmax是C語言(C99)自帶的一個函數(shù),用于比較兩數(shù)大小,返回較大值
在cplusplus網(wǎng)站上搜索fmax函數(shù),了解更多信息https://cplusplus.com/
famx返回值為雙精度浮點型,同時可用fmaxf,fmaxl
2. 運用fmax函數(shù)? 包含頭文件:include
#include#includeint main()
{
printf("fmax (100.0, 1.0) = %f\n", fmax(100.0, 1.0));
printf("fmax (-100.0, 1.0) = %f\n", fmax(-100.0, 1.0));
printf("fmax (-100.0, -1.0) = %f\n", fmax(-100.0, -1.0));
return 0;
}
運行結(jié)果:
同樣可以宏定義一個max達到與fmax函數(shù)同樣的效果:
#include#define max(x,y) (x) >(y) ? (x) : (y)
int main()
{
printf("max (100.0, 1.0) = %f\n", max(100.0, 1.0));
printf("max (-100.0, 1.0) = %f\n", max(-100.0, 1.0));
printf("max (-100.0, -1.0) = %f\n", max(-100.0, -1.0));
return 0;
}
運行結(jié)果與使用fmax函數(shù)的結(jié)果是一樣的;
?小總結(jié):在之前的文章中解決實際題目時我也是主要運用宏定義的方法,寫這些東西主要是想表達fmax使用起來比宏定義一個max要方便很多,至少在敲代碼上簡便😁
fmin函數(shù)與fmax用法是完全相同的,只是返回值是較小值,大家可自行嘗試
二、fdim函數(shù) 1.? 解析fdim函數(shù)使用fdim函數(shù)判斷傳入的第一個參數(shù)(x)是否大于第二個參數(shù)(y)
如果x >y 則返回兩者的差值( x - y )?
如果 x< y 則返回 0?
2. 運用fdim函數(shù)? 包含頭文件:include
#include#include
int main ()
{
printf ("fdim (2.0, 1.0) = %f\n", fdim(2.0,1.0));
printf ("fdim (1.0, 2.0) = %f\n", fdim(1.0,2.0));
printf ("fdim (-2.0, -1.0) = %f\n", fdim(-2.0,-1.0));
printf ("fdim (-1.0, -2.0) = %f\n", fdim(-1.0,-2.0));
return 0;
}
運行結(jié)果:
三、qsort函數(shù) 1. 解析qsort函數(shù)調(diào)用qsort函數(shù)需要傳入四個參數(shù):
2. 運用qsort函數(shù)?① 待排序的數(shù)組首地址
② 數(shù)組元素的個數(shù)
③?單個元素的大?。ㄗ止?jié))
④ 實現(xiàn)一個比較函數(shù)(cmpare)
? 包含頭文件:include
四個當(dāng)中最重要的就是實現(xiàn)最后一個比較函數(shù)了,這也使我們唯一需要手動實現(xiàn)的東西:
這里給出一個簡單的例子帶大家初步熟悉??
#include#include//比較函數(shù)
int cmp_int(int* e1,int* e2) //數(shù)組元素為整型,所以用整型指針接收
{
return *e1 - *e2; //具體原理看后圖
}
int main()
{
int arr[] = { 9,8,7,6,5,4,3,2,1 };
int size = sizeof(arr) / sizeof(arr[0]); //計算數(shù)組元素個數(shù)
qsort(arr, size,sizeof(arr[0]), cmp_int); //sizeof(arr[0])表示一個元素的大?。?bite
//打印數(shù)組
for (int i = 0; i< size; i++)
{
printf("%d ",arr[i]);
}
return 0;
}
3. 深入挖掘qsort?相信大家經(jīng)過上面這個例子之后能夠大概運用了,但是可能有同學(xué)會提問,為什么比較函數(shù)返回兩者相減呢?
翻閱qsort函數(shù)原理,對于返回大于零的數(shù)字時(e1>e2) ,將較大值覆蓋到較小值,最終實現(xiàn)排序的目的;
qsort 函數(shù)實現(xiàn)了一種快速排序算法,用于對 num 元素數(shù)組進行排序,每個元素的寬度字節(jié)。參數(shù)基是指向要排序的數(shù)組基的指針。qsort 用排序的元素覆蓋此數(shù)組。參數(shù) compare 是指向用戶提供的例程的指針,該例程比較兩個數(shù)組元素并返回指定其關(guān)系的值。qsort 在排序過程中調(diào)用 COMPARE 例程一次或多次,每次調(diào)用時將指針傳遞給兩個數(shù)組元素
如果想要得到倒序,直接將比較函數(shù)里兩者相減的位置交換即可??
4.qsort實戰(zhàn)劍指 Offer 39.?數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字
leetcode傳送??https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/?favorite=xb9nqhhg
數(shù)組中有一個數(shù)字出現(xiàn)的次數(shù)超過數(shù)組長度的一半,請找出這個數(shù)字。
你可以假設(shè)數(shù)組是非空的,并且給定的數(shù)組總是存在多數(shù)元素。
示例?1:
輸入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 輸出: 2
完整代碼:?
int cmp(int* x, int* y)
{
return *x - *y;
}
int majorityElement(int* nums, int numsSize) {
qsort(nums, numsSize, sizeof(int), cmp);
return nums[numsSize / 2];
}
用排序知識這道題的一種做法,這道題有O(n)的做法,這里就不再贅述了?,之后有時間我會專門出一期劍指offer的文章
上述這些函數(shù)都極大的減輕了我們的代碼量,尤其時qsort函數(shù),當(dāng)我們在刷題時遇到需要我們進行排序之后再做的題,這時我們使用C語言內(nèi)置的函數(shù)就方便很多了👌
當(dāng)然,如果你想要知道更多排序算法,歡迎閱讀我之前所寫的
排序算法(一)https://blog.csdn.net/Dusong_/article/details/127749130?spm=1001.2014.3001.5502
排序算法(二)https://blog.csdn.net/Dusong_/article/details/127385058?spm=1001.2014.3001.5502
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧