前一阵了解了一些常用的算法。试着用JavaScript写了一下。
1.JavaScript冒泡排序。 依次与相邻的元素对比,如果比后面的元素大,则交换位置。
function bubbleSort(arr){
var j,k,temp,len=arr.length,i=len-1,paook;
while(i--){
paook = true;
for (j = 0; j < len-1; j++) {
k=j+1;
temp = arr[j];
if(arr[k]<arr[j]){
arr[j] = arr[k];
arr[k] = temp;
paook = false;
}
}
if(paook == true){
break;
}
console.log(arr);
}
return arr;
}
排序数组:var a = [9,8,7,6,5,4,3,2,1,0];
排序过程:
[8, 7, 6, 5, 4, 3, 2, 1, 0, 9]
[7, 6, 5, 4, 3, 2, 1, 0, 8, 9]
[6, 5, 4, 3, 2, 1, 0, 7, 8, 9]
[5, 4, 3, 2, 1, 0, 6, 7, 8, 9]
[4, 3, 2, 1, 0, 5, 6, 7, 8, 9]
[3, 2, 1, 0, 4, 5, 6, 7, 8, 9]
[2, 1, 0, 3, 4, 5, 6, 7, 8, 9]
[1, 0, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
像不像气泡冒出水面。。。
2.JavaScript选择排序。左边为有序数组,右边为无序数组。每一轮从无序数组中选一个最小的放在有序数组末尾。
function selectSort(arr){
var i,j,k,len=arr.length,temp;
for (i = 0; i < len-1; i++) {
k=i;
temp = arr[i];
for (j = i+1; j < len; j++) {
if(temp>arr[j]){
temp = arr[j];
k = j;
}
}
arr[k] = arr[i];
arr[i] = temp;
console.log(arr);
}
return arr;
}
排序过程:
[0, 8, 7, 6, 5, 4, 3, 2, 1, 9]
[0, 1, 7, 6, 5, 4, 3, 2, 8, 9]
[0, 1, 2, 6, 5, 4, 3, 7, 8, 9]
[0, 1, 2, 3, 5, 4, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
从后面挑一个最小的放到左边的有序部分。 看这个其实排到一半的时候就排好了。
3.JavaScript插入排序。左边为有序数组,右边为无序数组。每一轮排序都将无序数组的第一位与有序数组中的值对比,插入到有序数组中合适的位置。
function insertSort(arr){
var i,j,k,len=arr.length,temp;
for (i = 1; i < len; i++) {
temp = arr[i];
for (j=i-1; j >-1; j--) {
if(arr[j]>temp){
arr[j+1] = arr[j];
}else{
break;
}
}
arr[j+1] = temp;
console.log(arr);
}
return arr;
}
排序过程:
[8, 9, 7, 6, 5, 4, 3, 2, 1, 0]
[7, 8, 9, 6, 5, 4, 3, 2, 1, 0]
[6, 7, 8, 9, 5, 4, 3, 2, 1, 0]
[5, 6, 7, 8, 9, 4, 3, 2, 1, 0]
[4, 5, 6, 7, 8, 9, 3, 2, 1, 0]
[3, 4, 5, 6, 7, 8, 9, 2, 1, 0]
[2, 3, 4, 5, 6, 7, 8, 9, 1, 0]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
今天太晚先写到这里。后面还有复杂一点的排序算法。大家五一愉快。
JavaScript排序动画演示可查看文章:http://blog.youkuaiyun.com/liusaint1992/article/details/51656124
演示地址:http://runningls.com/demos/2016/sortAnimation/
转载注明出处:http://blog.youkuaiyun.com/liusaint1992/article/details/51284799