冒泡排序和选择排序
玲珑骰子安红豆,入骨相思知不知
冒泡排序
思想:
- 冒泡排序只会操作相邻的两个数据。
- 次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。如果不满足就让它俩互换。
- 一次冒泡会让至少一个元素移动到它应该在的位置,重复 n 次,就完成了 n 个数据的排序工作。
特点:
优点:排序算法的基础,简单实用易于理解。
缺点:比较次数多,效率较低。
代码:
var arr = [8,6,3,7,1] for(var i=0;i<=(arr.length-1)-1;i++){ for(var j=0;j<=(arr.length-1)-1-i;j++){ if(arr[j]>arr[j+1]){ var u=0; u = arr[j]; arr[j] = arr[j+1]; arr[j+1] = u; } } } console.log(arr);
结果如下:
选择排序
思路:
选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间。但是选择排序每次会从未排序区间中找到最小的元素,将其放到已排序区间的末尾。
步骤:
1.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
2.再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
3.重复第二步,直到所有元素均排序完毕。
特点:
优点:进行(n-1)趟排序即可排序完成,时间复杂度为n的平方O(n*n)
缺点:比较次数比较多,每一趟从数据中选出的目标数据都是和剩下所有数据比较的结果。
例题代码:
var arr = [3,5,16,13,20] for(var i=0;i<=arr.length-1-1;i++){ var min = i; for(j=i+1;j<arr.length;j++){ if(arr[min]>arr[j]){ min = j; } } if(min!=i){ var res = 0; res = arr[i]; arr[i] = arr[min]; arr[min] = res; } } console.log(arr);
结果如下:
逆战班
2020.03.22