設要排序的陣列是mutablearray物件,首先任意選取乙個資料(通常選用陣列的第乙個數)作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一次快速排序。
步驟講解
1 ).設定兩個變數i,j,排序開始時i=0,就j = mutablearray.count - 1;
2 ).設定陣列的第乙個值為比較基準數key,key=mutablearray.count[0];
3 ).因為設定key為陣列的第乙個值,所以先從陣列最右邊開始往前查詢比key小的值。如果沒有找到,j--繼續往前搜尋;如果找到則將mutablearray[i]和mutablearray[j]互換,並且停止往前搜尋,進入第4步;
5 ).重複第3、4步,直到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,就是說選...