常見排序演算法之JavaScript實現

2021-08-04 23:19:39 字數 2039 閱讀 1419

1.為了方便說明,預設按從小到大排序

基本思路:

1.依次比較相鄰的兩個數,如果第乙個比第二個小,不變。如果第乙個比第二個大,調換順序。一輪下來,最後乙個是最大的數

2.對除了最後乙個之外的數重複第一步,直到只剩乙個數

**:

function bubblesort(myarray)

}} return myarray;

}function swap(myarray, p1, p2)

基本思路:

1.找出最小的數,和第乙個交換位置

2.在剩下的數中,找出最二小的數,放在第二個

3.依次類推,排出順序

**:

function selectionsort(myarray)

}// 如果當前位置不是最小值,將其換為最小值

if (i != min)

}return myarray;

}function swap(myarray, p1, p2)

基本思路:

1.把陣列分為[已排序]和[未排序]兩部分,第乙個數為[已排序],其餘為[未排序]

2.從[未排序]抽出第乙個數,和[已排序]部分比較,插入到合適的位置

**:

function insertionsort(myarray) 

myarray[j+1] = value;

}return myarray;

}

基本思路:

1.不斷將陣列對半分,直到每個陣列只有乙個

2.將分出來的部分重新合併

3.合併的時候按順序排列

// 被拆分的陣列重新合併

function merge(left, right) else

}// 和其他陣列拼接

return result.concat(left.slice(left_index)).concat(right.slice(right_index));

}function mergesort(myarray)

var middle = math.floor(myarray.length / 2),

left = myarray.slice(0, middle),

right = myarray.slice(middle);

// 遞迴

// 不斷拆分只到乙個陣列只有乙個數

return merge(mergesort(left), mergesort(right));

}

基本思路:

1.以乙個數為基準(中間的數),比基準小的放到左邊,比基準大的放到右邊

2.再按此方法對這兩部分資料分別進行快速排序(遞迴進行)

3.不能再分後退出遞迴,並重新將陣列合併

**:

var quicksort = function(myarray) 

// 中間基準值的index

var pivotindex = math.floor(myarray.length / 2);  

// 基準值

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

var left = ;  

var right = ;  

// 小的放左邊,大的放右邊

for (var i = 0; i < myarray.length; i++) else   

}  // 遞迴

// 把陣列合併在一起

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

};

常見排序演算法之希爾排序演算法

1.希爾排序簡介 1.介紹 希爾排序 shell s sort 是插入排序的一種又稱 縮小增量排序 是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法 2.核心思想 希爾排序是把記錄按下標的一定增量分組,對每組使用直接插入排序演算法排序 當增量減至1時,整個檔案恰被分成一組,演算...

AngularJS系列之JavaScript繼承

所有開發者定義的類都可作為基類。本地類和宿主類不能作為基類。建立的子類將繼承超類的所有屬性和方法,包括建構函式及方法的實現。子類可直接訪問這些方法。子類還可新增超類中沒有的新屬性和方法,也可以覆蓋超類的屬性和方法。建構函式使用 this 關鍵字給所有屬性和方法賦值 即採用類宣告的建構函式方式 因為建...

常見排序演算法之氣泡排序

1 首先,從第乙個元素開始,比較該元素與該元素相鄰的下乙個元素的大小 即第乙個元素與第二個元素的大小 如果該元素比較大則交換位置,否則不交換位置。2 按照1的步驟不斷重複的比較下一元素與其相鄰元素之間的大小,直到第n 1個元素,第一趟比較結束。例如 接下去是第二個元素,重複 1 的步驟,比較其與其相...