一、計算乙個數轉化成二進位制後包含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語言常見的問題,複習一下,也方便以後在網路上搜尋的朋友可以看見,以便交流學習。今天講一下水仙花數這個問題 列印出所有的水仙花數。水仙花數是指乙個三位數,其各位數字立方和等於該數 分析 主要是判斷這個數是不是水仙花數,求出百十個位,然後判斷...