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);
调试结果如下:
相关文章推荐
- 算法系列(二)冒泡排序、选择排序、插入排序和希尔排序(Java实现)
- 几种基本的排序算法:选择排序、插入排序、冒泡排序
- java必须知道的八大种排序算法:冒泡排序、 选择排序、插入排序、快速排序、希尔算法、归并排序算法、基数排序、堆排序算法
- c语言中冒泡排序、插入排序、选择排序算法比较
- iOS开发--图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序
- 算法 ----- 排序lowB三人组 冒泡排序 选择排序 插入排序
- java基本算法总结(冒泡排序、选择排序、插入排序)
- 算法---冒泡排序,快速排序,二分查找(折半查找),选择排序,插入排序
- 数据结构与算法——三种基础排序算法C#实现(冒泡排序、选择排序、插入排序)
- 三个简单排序算法:冒泡排序、选择排序、插入排序
- python开发之路Day17-算法设计(冒泡排序、选择排序、插入排序、二叉树)
- 算法分析中最常用的几种排序算法(插入排序、希尔排序、冒泡排序、选择排序、快速排序,归并排序)C 语言版
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序
- 【C#算法】冒泡排序 选择排序 插入排序 希尔排序--转
- 简单排序算法之插入排序、选择排序和冒泡排序
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- 三个典型的经典算法冒泡排序,插入排序,选择排序
- 【从头开始学算法】选择排序 插入排序 冒泡排序
- c语言中冒泡排序、插入排序、选择排序算法比较
- 基本算法简单实现-二分法查找、合并排序、冒泡排序、插入排序、选择排序、快速排序