C 奇技) 取位數,交換,比較,求均值

2021-10-03 10:32:46 字數 862 閱讀 2553

一、計算乙個數轉化成二進位制後包含1的位數

寫法:判斷x&(x-1)計算了幾次

程式:

int

func

(int x)

return count;

}

二,取兩個數的平均值

寫法:取相同的位與,相當於相同位的和除以2,取不同的位右移,相當於不同位的和除以2

程式:

intf(

int x,

int y)

三.不用判斷語句,找到兩個數中比較大的

intf(

int x,

int y)

四。找到三個整數的中間數

思路:兩兩取最大,然後取最小,反之亦可

int

medium

(int a,

int b,

int c)

五.不使用中間變數交換兩數的值

思路:加減法容易溢位,異或就不必擔心

注意交換函式如何通過形參改變實參!

兩種方式:指標,引用

void

swap1

(int

*a,int

*b)

void

swap2

(int

&a,int

&b)

//掌握了,nbo( ̄▽ ̄)d.

c 兩陣列取中位數 快速排序

給定兩個大小為 m 和 n 的正序 從小到大 陣列 nums1 和 nums2。請你找出這兩個正序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0 示例 2 nums...

海量資料取中位數,比較簡單耗時的是用堆排序

分類 演算法 2012 05 11 20 35 68人閱讀收藏 舉報 若有很大一組資料,資料的個數是n 每個數占4個位元組 記憶體大小為m個位元組,其中m 4 n,使得不能在現有記憶體情況下通過直接排序找到這n個數的中位數。解決海量資料中取中位數的方法有兩種比較簡單耗時的是用堆排序,還有一種是改造後...

C語言取位數練習之求「水仙花數」

最近表弟開學了,我還在家裡,不開心!所以想著繼續寫一下以前的c語言常見的問題,複習一下,也方便以後在網路上搜尋的朋友可以看見,以便交流學習。今天講一下水仙花數這個問題 列印出所有的水仙花數。水仙花數是指乙個三位數,其各位數字立方和等於該數 分析 主要是判斷這個數是不是水仙花數,求出百十個位,然後判斷...