zoukankan      html  css  js  c++  java
  • [JS]算法总结

    一、冒泡排序

    1. function bubbleSort(arr){
    2. for(var i=1;i<arr.length;i++){//共需要多少轮
    3. for(var j=0;j<arr.length-i;j++){//每i轮过后,都有最后i个数无需再排序,即第1轮过后,最后一个数最大,第2轮过后,最后两个数最大
    4. if(arr[j]>arr[j+1]){//如果前一个数大于后一个,则交换二者的值
    5. arr[j+1]=[arr[j],arr[j]=arr[j+1]][0];
    6. }
    7. }
    8. }
    9. console.log(arr);
    10. }
    11. sort();

    二、快速排序

    1. function quickSort(arr){
    2. if(arr.length<=1){
    3. return arr;
    4. }
    5. var pivotIndex = Math.floor(arr.length/2);//取基准点
    6. var pivot = arr.splice(pivotIndex,1)[0];//从数组中取出基准点所在的数
    7. var left = [];
    8. var right = [];
    9. for(var i=0;i<arr.length;i++){
    10. if(arr[i] < pivot){
    11. left.push(arr[i]);
    12. }else {
    13. right.push(arr[i]);
    14. }
    15. }
    16. return quickSort(left).concat(pivot,quickSort(right));//递归调用
    17. }

    三、直接插入排序

    1. function insertionSort(arr){
    2. for (var i = 1; i < arr.length; i++) {//从第2个数开始排序
    3. for (var j = i; j > 0; j--) {//从后往前查找
    4. if (arr[j - 1] > arr[j]) {//如果前一个数大于后一个数,交换二者的值
    5. arr[j]=[arr[j-1],arr[j-1]=arr[j]][0];
    6. } else {
    7. break;
    8. }
    9. }
    10. }
    11. return arr;
    12. }

    四、二分查找插入排序

    1. function binaryInsertionSort(array) {
    2. for (var i = 1; i < array.length; i++) {
    3. var key = array[i], left = 0, right = i - 1;
    4. while (left <= right) {
    5. var middle = parseInt((left + right) / 2);
    6. if (key < array[middle]) {
    7. right = middle - 1;
    8. } else {
    9. left = middle + 1;
    10. }
    11. }
    12. for (var j = i - 1; j >= left; j--) {
    13. array[j + 1] = array[j];
    14. }
    15. array[left] = key;
    16. }
    17. return array;
    18. }

    五、选择排序

    1. function selectionSort(arr) {
    2. for (var i = 0,len=arr.length; i < len - 1; i++) {//n个数需要n-1次排序
    3. for (var j = i + 1; j < len; j++) {//从i之后的一个数开始遍历
    4. if (arr[j] < arr[i]) {//找到最小的那个数,然后与arr[i]交换值
    5. arr[i]=[arr[j],arr[j]=arr[i]][0];
    6. }
    7. }
    8. }
    9. return arr;
    10. }

    参考链接:
    http://www.cnblogs.com/beli/p/6297741.html
    http://www.cnblogs.com/ywang1724/p/3946339.html

  • 相关阅读:
    数组
    灰度转换
    类的定义和头文件
    读文件
    操纵元
    传递引用
    TensorFlow常用函数
    四、Item Pipeline
    三、Scrapy Shell
    二、Scrapy案例入门
  • 原文地址:https://www.cnblogs.com/enginex/p/6908710.html
Copyright © 2011-2022 走看看