Enumerable Zip 實現一下

2021-09-06 00:06:13 字數 1285 閱讀 6470

早上看到「geff zhang」介紹了enumerable#zip,閒來沒事弄乙個實現。

也談不上思路,看了張兄的測試**,先寫了個簡單的結構:

public static 

ienumerable

zip(

this

ienumerable

first,

ienumerable

sencond,

func

func)

有了結構,實現就簡單多了。張兄在文中介紹到「方法將第乙個序列中的每個元素與第二個序列中有相同索引的元素合併。如果該序列不具有相同數目的元素,則直到它到達其中乙個的末尾,該方法才合併序列。例如,如果乙個序列有三個元素,另乙個序列具有四個元素,那麼結果序列將只有三個元素。」

要讀到兩個序列的各個元素,按照相同索引的元素,執行func,原先想想用foreach,for之類的,好像有點麻煩,為了簡單,就直接轉換成ienumerator。

public static 

ienumerable

zip(

this

ienumerable

first,

ienumerable

sencond,

func

func)}}

隨便寫的,也沒在意效能方面,等大家一起討論下好了。

附上測試**:

int

numberic =

new int

;

string

words =

new string

;

int numbericdiff =

new int

;

var

result = numberic.zip(words, (a, b) => a +

" "

+ b);

foreach

(var

r in

result)

result = numbericdiff.zip(words, (a, b) => a +

" "

+ b);

foreach

(var

r in

result)

結果:

快速排序演算法實現(遞迴實現 棧實現)

基本思想 選擇乙個基準元素,比如選擇最後乙個元素,通過一趟掃瞄,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素,此時基準元素在其排好序後的正確位置,又稱為軸位置,此位置的元素確定後不再參與排序,然後再用同樣的方法遞迴地排序劃分的兩部分。分析 快速排序是不穩定的排序。快速排序的時間複...

介面實現與配置實現

在實現系統功能的時候,通常會首先定義好功能的介面,在系統功能不斷被實現的過程中,慢慢的發現有些介面的實現很類似,這個時候通常會開始做一次抽象,形 成乙個共同的部分,慢慢的系統形成了乙個抽象的層次,而為了通用,通常是通過定義介面,形成乙個抽象類,抽象類中暴露出一些抽象方法供外部擴充套件實 現,逐步的積...

js分頁實現,前端實現。

主要是借鑑了網上乙個例子,自己重新加了樣式,新增了跳轉,修改了一些小地方,用於和大家一起分享,前端分頁的技巧,的資料是我已經寫好了,其實大家也可以前端渲染 然後再分頁,都是可以的。其實分頁最關鍵是這兩句 var startrow currentpage 1 pagesize 1 currentpag...