冒泡排序:
原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,
这样一趟过去后,最大或最小的数字被交换到了最后一位。
图片示例:
代码示例:
var arr = [5,8,3,4,5,9,1,4,5,9,6,3,8]
for(var i=1;i<arr.length;i++){
for(var j=0;j<arr.length-i;j++){
if(arr[j]>arr[j+1]){
var temp = arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
console.log(arr);
总结:
对于冒泡排序,我们应该对它的思想进行理解,作为排序算法学习的引导,让我们的思维更加开阔。
虽然冒泡排序在我们的实际工作中并不会用到,其他排序算法多多少少比冒泡排序算法的性能更高,但是我们还是要掌握冒泡排序的思想及实现,并且在面试时还是有可能会用到。
插入排序:
插入排序,顾名思义其基本操作就是插入,不断把一个个元素插入到一个序列中,最终得到排序序列。为此只需维护好所构造序列的排序性质,最终就能自然得到结果。
示例:
代码示例:
var arr = [10,8,100,31,87,70,1,88];
for(var i=1;i<arr.length;i++){
for(var j=i;j>0;j--){
if(arr[j-1]>arr[j]){
var temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
}
console.log(arr);
总结:
插入排序不适合对于数据量比较大的排序应用。但是,如果需要排序的数据量很小,例如,量级小于千,那么插入排序还是一个不错的选择。尤其当数据基本有序时,采用插入排序可以明显减少数据交换和数据移动次数,进而提升排序效率。