基本排序算法的JavaScript实现
2016-08-24 16:33
429 查看
基本排序算法的JavaScript实现
前言
最近,复习了一下基本的排序算法,以前在校使用C语言实现的,现在由于自己做的是前端开发,所以就动手使用JavaScript实现了一些基本排序算法。内容
以下是部分基本排序算法的实现:插入排序(Insertion sort)
insertionSort.jsfunction insertionSort(arr){ var i, j, len, tmp; for(i = 1, len = arr.length; i < len; i++){ tmp = arr[i]; for(j = i - 1; j >= 0; j--){ if(tmp < arr[j]){ arr[j + 1] = arr[j]; }else{ break; } } arr[j + 1] = tmp; } } var arr = [8, 2, 4, 9, 3, 6]; console.log('Before sorting: ', arr); insertionSort(arr); console.log('After sorting: ', arr);
归并排序(Merge sort)
mergeSort.jsfunction mergeSort(arr){ var k, leftArr, rightArr, sorted = [], len = arr.length; if(len === 1){ return arr; } k = Math.floor(len / 2); leftArr = mergeSort(arr.slice(0, k)); rightArr = mergeSort(arr.slice(k, len)); while(leftArr.length > 0 && rightArr.length > 0){ if(leftArr[0] <= rightArr[0]){ sorted.push(leftArr.shift()); }else{ sorted.push(rightArr.shift()); } } sorted = sorted.concat(leftArr).concat(rightArr); return sorted; } var arr = [8, 2, 4, 9, 3, 6]; console.log('Before sorting: ', arr); arr = mergeSort(arr); console.log('After sorting: ', arr);
快速排序(Quicksort)
quicksort.jsfunction quicksort(arr, p, r){ var i, j, pivot, tmp; if(p < r){ for(i = p - 1, j = p, pivot = arr[r]; j < r; j++){ if(arr[j] <= pivot){ i++; tmp = arr[j]; arr[j] = arr[i]; arr[i] = tmp; } } tmp = arr[j]; arr[j] = arr[i + 1]; arr[i + 1] = tmp; quicksort(arr, p, i); quicksort(arr, i + 2, r); } } var arr = [8, 2, 4, 9, 3, 6]; console.log('Before sorting: ', arr); quicksort(arr, 0, 5); console.log('After sorting: ', arr);
相关文章推荐
- JavaScript实现在线编辑表格
- JavaScript 实现动态增加、删除表单域
- 『收藏』可拖放移动的层的Javascript实现
- JavaScript实现的Base64编码和解码
- javascript 中对Trim()的实现
- [导入]JavaScript实现的Base64编码和解码
- 『改进』逐行滚动文字效果的Javascript实现
- javascript/Jscript实现父子窗体的互相引用问题
- Javascript实现DES加密算法。
- javascript/Jscript实现父子窗体的互相引用问题(Powered By ZosaTapo)
- JSP + JavaScript 实现类似 MSDN CSDN 导航树效果!
- 用JavaScript实现动画效果
- [转贴]JavaScript的Prototype实现
- 类似 MSDN CSDN 导航树效果 ASP.Net(C#) + JavaScript 实现!
- 类似 MSDN CSDN 左边导航树效果的实现! [JavaScript + ASP]
- JavaScript 实现日历式日期选择
- 类似 MSDN CSDN 导航树效果 ASP.Net(C#) + JavaScript 实现!
- 『原创』从屏幕右下角自动上升的窗口的Javascript实现
- javascript 中对Trim()的实现
- 用JavaScript与WebService实现网页部分数据XML传送