常见排序算法的js实现
冒泡排序
<script type="text/javascript">
var a = [9, 6, 7, 67, 8];
for(var i = 0;i < a.length - 1;i++) {
for (var j = 0;j < a.length - 1-i;j++){
if (a[j] > a[j+1]){
var temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
console.log(a);
</script>
选择排序
<script type="text/javascript">
var a = [9, 6, 7, 67, 8];
//实现方法一
for(var i = 0;i < a.length - 1;i++) {
var min = i;
for (j = i + 1;j < a.length; j++){
if (a[min] > a[j]){
min = j;
}
}
if (min !== i){
var temp = a[min];
a[min] = a[i];
a[i] = temp;
}
}
console.log(a);
//实现方法二
for (var i = 0; i < a.length - 1; i++){
for (j = i + 1; j < a.length; j++){
if (a[i] > a[j]){
var temp = a[i];
a[i] = a[j];
a[j] = a[i];
}
}
}
console.log(a);
</script>
插入排序
<script>
function insertionSort(arr) {
for (var i = 1; i < arr.length; i++) {
var preIndex = i;
var current = arr[i];
while (preIndex > 0 && arr[preIndex - 1] > current) {
arr[preIndex] = arr[preIndex - 1];
preIndex--;
}
arr[preIndex] = current;
}
return arr;
}
var array = [1, 2, 4, 5, 6, 3, 5, 0, 38]
console.log(insertionSort(array))
</script>
快速排序
<script type="text/javascript">
var arry = [2, 6, 98, 45, 34, 76, 34, 49, 88, 99, 709, 21, 65]
function quickSort(arry) {
if(arry.length <= 1){
return arry
}
var centerIndex = Math.floor(arry.length/ 2);
var center = arry.splice(centerIndex, 1);
var left = [];
var right = [];
for(i = 0; i < arry.length; i++) {
if(arry[i] < center) {
left.push(arry[i])
} else {
right.push(arry[i])
}
}
return quickSort(left).concat(center, quickSort(right))
}
arr = quickSort(arry)
console.log(arr)
</script>
希尔排序
<script>
function shell(arr) {
len = arr.length;
// 初始化间隔
grap = Math.floor(len / 2);
while (grap >= 1) {
for (var i = grap; i < len; i++) {
temp = arr[i];
pre = i;
while (pre - grap >= 0 && arr[pre - grap] > temp) {
arr[pre] = arr[pre - grap];
pre -= grap;
}
arr[pre] = temp;
}
grap = Math.floor(grap / 2)
}
return arr
}
var array = [1, 2, 4, 5, 6, 3, 5, 0, 38]
console.log(shell(array))
</script>