一:冒泡排序
冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。就像“冒泡一样”.
废话不多说,上代码:
function bubbleSort(arr) {
var arr = this.arr;
for(var i = 0; i < arr.length; i++) {
for(var j = 0; j < arr.length - i; j++) {
if(arr[j] < arr[j - 1]) {
var temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
}
}
}
return arr;
}
第二:快速排序(QuickSort)
这里推荐大家看阮一峰老师的博客
http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html
不爱点击的也可以参照,在这里做个总结:
- 第一步,在数据集中选择一个元素作为基准
- 第二步,所有小于基准的元素,都移动到这个“基准”的左边,所有大于这个“基准”的元素都移动到这个“基准”的右边
- 对“基准”左边和右边的两个子集,不断重复第一步和第二步,直到所有的子集只剩下一个元素为止
代码:
function quickSort(arr){
//递归结束的判断条件
if(arr.length<=1){
return arr;
}
//选择基准
var pivotIndex=Math.floor(arr.length/2);
var pivot=arr.splice(pivotIndex,1)[0];
var leftarr=[];
var rightarr=[];
//然后遍历数组
for(var i=0;i<arr.length;i++){
if(arr[i]<pivot){
leftarr.push(arr[i])
}else{
rightarr.push(arr[i]);
}
}
//最后递归
return quickSort(leftarr).concat([pivot],quickSort(rightarr));
}