使用基礎演算法,領略演算法魅力

2021-08-25 02:44:07 字數 1550 閱讀 5020

// js 利用sort進行排序

sort可以按照元素的字元編碼的順序進行排序,條件是此元素必須為字串。對於數字排序,定義規則是很重要的。(比較函式)

systemsort: function

(array) );

},

// 氣泡排序

bubblesort: function

(array) }}

return

array;

},

// 快速排序

注意地方:

遞迴函式的使用 splice返回乙個陣列 要在函式中設定判斷陣列是否為1

var quicksort = function

(arr)

var pivotindex = math.

floor(arr.

length / 2);

var pivot = arr.splice(pivotindex, 1)[0];

var left = ;

var right = ;

for (var i = 0; i

< arr.

length; i++)

else

}return quicksort(left).concat([pivot], quicksort(right));

};

// 插入排序

插入排序類似整理撲克牌,將每一張牌插到其他已經有序的牌中適當的位置。

插入排序由n-1趟排序組成,對於p=1到n-1趟,插入排序保證從位置0到位置p上的元素為已排序狀態。

簡單的說,就是插入排序總共需要排序n-1趟,從index為1開始,講該位置上的元素與之前的元素比較,放入合適的位置,這樣迴圈下來之後,即為有序陣列

insertsort: function

(array) else

}array[j + 1] = key;

}return

array;

},

// 希爾排序

把記錄按步長 gap 分組,對每組記錄採用直接插入排序方法進行排序。

隨著步長逐漸減小,所分成的組包含的記錄越來越多,當步長的值減小到 1 時,整個資料合成為一組,構成一組有序記錄,則完成排序

shellsort: function(array) 

stepsort(steparr[i]);

}// 排序乙個步長

function

stepsort

(step) else

}array[tem + step] = key;}}

}return

array;

}

作為乙個前端工程師,對於和文字的熱情是高於演算法和邏輯的。但是,在資料大**的今天,對於資料的處理和其處理的方法的效率,也十分重要。(不得不學)

這兩天學完,其實是揹著默寫,但是,在不斷除錯bug的過程中,也逐漸被演算法的魅力所吸引。所以發幾個基礎的演算法和大家分享。

演算法基礎( 演算法)

演算法基礎 演算法 hash演算法有兩種,即sha 1和md5演算法這裡先介紹md5演算法.md5產生乙個128位的hash值,在經過一寫初始樹立後,將明文分成了512位的塊,再將每一塊分成16個32位的子塊。演算法的輸出是4個32位的塊,連線起來構成128位的hash值。首先,將訊息填充到比512...

演算法基礎 排序演算法

1.氣泡排序 原理有一列資料,從第乙個數開始,第乙個和第二個進行比較,如果第乙個大就交換,如果第二個大就不變,再第二個和第三個比較,一次類推,第二輪是從第乙個數開始比到倒數第二個數,第三輪是從第乙個數比到倒數第三個數.以此類推.def bubble nums for j in range len n...

演算法基礎 Hash演算法

hash,一般翻譯做 雜湊 也有直接音譯為 雜湊 的,就是把任意長度的輸入,通過雜湊演算法,變換成固定長度的輸出,該輸出就是雜湊值。這種轉換是一種壓縮對映,也就是,雜湊值的空間通常遠小於輸入的空間,不同的輸入可能會雜湊成相同的輸出,所以不可能從雜湊值來唯一的確定輸入值。簡單的說就是一種將任意長度的訊...