您的位置:首页 > Web前端 > JavaScript

JS算法2 -- 排序 -- 冒泡排序、选择排序、插入排序

2019-02-20 22:03 148 查看

冒泡排序

1.对每一对相邻元素做比较。如果第一个比第二个大,就交换他们两个。
2.从开始第一对到结尾的最后一对,最后的元素应该会是最大的数。拿去最后一个数。
3.调换完一遍就重头开始再做比较。
4.直到没有任何一对数字需要比较。
( 每轮都让最大的放在最后一位,定下,前面的部分再次将最大的换到最后 )

var list1 = [9,5,4,6,12,3,1];
function swap(arr,i,j){
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}

//冒泡排序 时间复杂度O(n^2)
function bubbleSort(arr){
if(arr===null || arr.length<2){
return;
};
for(var end=arr.length-1;end>0;end--){
for(var i=0;i<end;i++){
if(arr[i]>arr[i+1]){
swap(arr,i,i+1);
}
}

}
}
console.log('未排序list1',list1);
bubbleSort(list1);
console.log("冒泡排序list1",list1);

选择排序

1.每次都在一列中找到最小的元素,存放在第一位。
2.直到把全部元素排完
( 每轮都让最小的放在第一位,定下,对后面部分再次选最小 )
选择排序是不稳定的排序方法。

//选择排序 时间复杂度O(n^2)
var list2 = [9,5,4,6,12,3,1];
function selectionSort(arr){
if(arr===null || arr.length<2){
return;
}
for(var i=0;i<arr.length;i++){
var minIndex = i;
for(var j=i+1;j<arr.length;j++){
minIndex = arr[j] < arr[minIndex] ? j : minIndex;
}
swap(arr,i,minIndex);
}
}
console.log('未排序list2',list2);
selectionSort(list2);
console.log('选
1fff8
择排序list2',list2);

插入排序:最稳定的排序方法

每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
( 如打扑克时的整牌,小的就往前插入 )

//插入排序 时间复杂度O(n^2)
var list3 = [9,5,4,6,12,3,1];
function insertionSort(arr){
if(arr===null || arr.length<2){
return;
}
for(var i=1;i<arr.length;i++){
for(var j=i-1;j>=0 && arr[j]>arr[j+1];j--){
swap(arr,j,j+1);
}
}
}
console.log('未排序list3',list3);
insertionSort(list3);
console.log('插入排序list3',list3);

调试结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐