zoukankan      html  css  js  c++  java
  • 面试题——4种排序算法 (选择排序、冒泡排序、插入排序、快速排序)

    直接考排序算法的概率不是很大,大多是它的变形题,不过我今天介绍几个容易理解的排序算法,

    然后 每天早上来一遍,这么做的作用并不是去练排序,而是早上锻炼思维能力,活跃思维·

     1 //选择排序 ,
     2 function selectionSort(arr){
     3     for (var i = 0; i < arr.length; i++) {
     4         for (var j = i+1; j < arr.length; j++) {
     5             if (arr[i] > arr[j]) {
     6                 var temp = arr[i];
     7                 arr[i] = arr[j];
     8                 arr[j] = temp;
     9             }
    10         }
    11     }
    12     return arr;
    13 }
    14 alert(selectionSort(arr))
    15 
    16 //冒泡排序
    17 function bubbleSort(arr){
    18     for (var i = 0; i < arr.length-1; i++) {
    19         for (var j = 0; j < arr.length-1-i; j++) {
    20         //每次比较都会确定一个最小数,所以j < arr.length-1-i
    21             if (arr[j] > arr[j+1]) {
    22                 var temp = arr[j];
    23                 arr[j] = arr[j+1];
    24                 arr[j+1] = temp;
    25             }
    26         }
    27     }
    28     return arr;
    29 }
    30 alert(bubbleSort(arr))
    31 
    32 // 插入排序,往前比较,如果当前数比前一个小则进行第二个循环操作,反之则直接进入下次外层循环
    33 function insertSort(arr){
    34     for (var i = 1; i < arr.length; i++) {
    35         var temp = arr[i];
    36         for (var j = i-1; j >=0 && temp < arr[j]; j--) {
    37             arr[j+1] = arr[j];
    38             arr[j] = temp;
    39         }
    40     }
    41     return arr;
    42 }
    43 alert(insertSort(arr))
    44 
    45 // 快速排序
    46 function quickSort(arr){
    47     // 如果数组长度<=1 ,则直接返回
    48     if (arr.length <= 1) return arr;
    49     //
    50     var bisectionIndex = Math.floor(arr.length/2);
    51     // 找基准,把基准从原数组中删除
    52     var bisection = arr.splice(bisection,1)[0];
    53     console.log(bisection);
    54 
    55     // 定义作用数组
    56     var left = [];
    57     var right = [];
    58 
    59     // 比基准小的放left ,比基准大的放right
    60     for (var i = 0; i < arr.length; i++) {
    61         if (arr[i] <= bisection) {
    62             left.push(arr[i]);
    63         }else{
    64             right.push(arr[i]);
    65         }
    66     }
    67     //递归
    68     return quickSort(left).concat([bisection],quickSort(right));
    69 }
    70 alert(quickSort(arr))

     

  • 相关阅读:
    547. Friend Circles
    399. Evaluate Division
    684. Redundant Connection
    327. Count of Range Sum
    LeetCode 130 被围绕的区域
    LeetCode 696 计数二进制子串
    LeetCode 116 填充每个节点的下一个右侧节点
    LeetCode 101 对称二叉树
    LeetCode 111 二叉树最小深度
    LeetCode 59 螺旋矩阵II
  • 原文地址:https://www.cnblogs.com/NTWang/p/6250334.html
Copyright © 2011-2022 走看看