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 的步驟,比較其與其相...