iOS 快速演算法

2021-08-03 10:26:01 字數 2168 閱讀 7113

設要排序的陣列是mutablearray物件,首先任意選取乙個資料(通常選用陣列的第乙個數)作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一次快速排序。

步驟講解

1 ).設定兩個變數ij,排序開始時i=0,就j = mutablearray.count - 1

2 ).設定陣列的第乙個值為比較基準數keykey=mutablearray.count[0]

3 ).因為設定key為陣列的第乙個值,所以先從陣列最右邊開始往前查詢比key小的值。如果沒有找到,j--繼續往前搜尋;如果找到則將mutablearray[i]mutablearray[j]互換,並且停止往前搜尋,進入第4步;

5 ).重複第34步,直到i==j(此時剛好執行完第三步或第四部),停止排序;

oc**實現

- (void)viewdidload

- (void)quicksortarray:(nsmutablearray *)array withleftindex:(nsinteger)leftindex andrightindex:(nsinteger)rightindex

nsinteger i = leftindex;

nsinteger j = rightindex;

//記錄比較基準數

nsinteger key = [array[i] integervalue];

while(i < j)

//如果比基準數小,則將查詢到的小值調換到i的位置

array[i] = array[j];

/**** 當在右邊查詢到乙個比基準數小的值時,就從i開始往後找比基準數大的值 ***/

while(i < j && [array[i] integervalue] <= key)

//如果比基準數大,則將查詢到的大值調換到j的位置

array[j] = array[i];

}

//將基準數放到正確位置

array[i] = @(key);

/**** 遞迴排序 ***/

//排序基準數左邊的

[self quicksortarray:array withleftindex:leftindex andrightindex:i - 1];

//排序基準數右邊的

[self quicksortarray:array withleftindex:i + 1 andrightindex:rightindex];

}

均值濾波快速演算法

1 概述 在影象處理中,在進行如邊緣檢測這樣的進一步處理之前,通常需要首先進行一定程度的降噪。中值濾波是一種非線性數字濾波器技術,經常用於去除影象或者其它訊號中的雜訊。這個設計思想就是 檢查輸入訊號中的取樣並判斷它是否代表了訊號,使用奇數個取樣 組成的觀察窗實現這項功能。觀察窗口中的數值進行 排序,...

Newman快速演算法(fast greedy)

newman快速演算法實際上是基於貪婪演算法思想的一種凝聚演算法。貪婪演算法是一種在每一步選擇中都採取在當前狀態下最好或最優 即最有利 的選擇,從而希望導致結果是最好或最優的演算法。社群發現 community detection 演算法用來發現網路中的社群結構,也可以視為一種廣義的聚類演算法。基於...

子網掩碼快速演算法

很多人肯定對設定子網掩碼這個不熟悉,很頭疼,那麼我現在就告訴大家乙個很容易算子網掩碼的方法,幫助一下喜歡偷懶的人 如果你希望每個子網中只有5個ip位址可以給機器用,那麼你就最少需要準備給每個子網7個ip位址,因為需要加上兩頭的不可用的網路和廣播ip,所以你需要選比7多的最近的那位,也就是8,就是說選...