zoukankan      html  css  js  c++  java
  • 排序

    冒泡排序:

     1 var arr=[1,10,2,100,101,98];
     2 
     3 function bubbleSort(arr){
     4     var len=arr.length,flag=null;
     5     if(len>1){
     6         for(var i=0;i<len-1;i++){
     7             flag=false;//位置变更标识符,可以优化性能
     8             for(var j=0;j<len-1-i;j++){
     9                 if(arr[j]>arr[j+1]){//前一项如果大于后一项
    10                     //先存下前一项的值
    11                     var temp=arr[j];
    12                     //后一项的值赋给前一项
    13                     arr[j]=arr[j+1];
    14                     //前一项的值赋给后一项
    15                     arr[j+1]=temp;
    16                     flag=true;//有位置交换则改变flag的值
    17                 }
    18             }
    19             if(!flag){//检测到上一轮已经没有位置变更,就说明排序已经完成
    20                 break;
    21             }
    22         }
    23     }
    24     return arr;
    25 }
    26 
    27 console.log(bubbleSort(arr));//[1, 2, 10, 98, 100, 101]

    插入排序:

     1 var arr=[1,10,2,100,101,98,2];
     2 
     3 function insertSort(arr){
     4     var len=arr.length;
     5     if(len>1){
     6         for(var i=1;i<len;i++){
     7             if(arr[i]<arr[i-1]){//当前项小于前一项的时候才向前插入
     8                 var cur=arr[i],j=i-1;//保存第i项的值,找到前一项的索引
     9                 while(j>=0 && cur<arr[j]){//前一项存在且第i的值小于前一项
    10                     arr[j+1]=arr[j];//当前比较项赋值为前一项的值
    11                     j--;//继续向前查找
    12                 }
    13                 arr[j+1]=cur;//将第i项插入到当前位置
    14             }
    15         }
    16     }
    17     return arr;
    18 }
    19 console.log(insertSort(arr));//[1, 2, 2, 10, 98, 100, 101]

    快速排序:

     1 var arr=[1,10,2,100,101,98,2];
     2 
     3 function quickSort(arr){
     4     if(arr.length<=1){
     5         return arr;
     6     }
     7     var midIndex=Math.floor(arr.length/2);
     8     var minItem=arr.splice(midIndex,1)[0];
     9     var leftArr=[],rightArr=[];
    10     for(var i=0;i<arr.length;i++){
    11         var cur=arr[i];
    12         cur<minItem?leftArr.push(cur):rightArr.push(cur);
    13     }
    14     return quickSort(leftArr).concat(minItem,quickSort(rightArr));
    15 }
    16 console.log(quickSort(arr));//[1, 2, 2, 10, 98, 100, 101]
     1 function quickSort(arr){
     2     if(arr.length<=1){
     3         return arr;//如果数组只有一个数,就直接返回;
     4     }
     5 
     6     var num = Math.floor(arr.length/2);//找到中间数的索引值,如果是浮点数,则向下取整
     7 
     8     var numValue = arr.splice(num,1);//找到中间数的值
     9     var left = [];
    10     var right = [];
    11 
    12     for(var i=0;i<arr.length;i++){
    13         if(arr[i]<numValue){
    14             left.push(arr[i]);//基准点的左边的数传到左边数组
    15         } else{
    16            right.push(arr[i]);//基准点的右边的数传到右边数组
    17         }
    18     }
    19 
    20     return quickSort(left).concat(numValue,quickSort(right));//递归不断重复比较
    21 }

     阶乘:

    1 function factorial(n) {
    2   if (n === 1) return 1;
    3   return n * factorial(n - 1);
    4 }
    1 function factorial(n, total) {
    2   if (n === 1) return total;
    3   return factorial(n - 1, n * total);
    4 }
    5 
    6 factorial(5, 1) 
  • 相关阅读:
    Maven工程读取properties文件过程
    Nginx实现高可用(了解)
    使用Nginx实现负载均衡(tomcat集群之后实现交叉访问)
    使用Nginx实现反向代理过程(一台服务器部署两个网站)
    一台服务器,通过不同域名区分不同主机,配置步骤
    EditPlus5.0破解激活
    [通知] 博客停更
    [论文理解] 活体检测算法论文小结 (一)
    [CUDA] CUDA编程入门
    [学习笔记]《机器学习基础》 课程总结(一)
  • 原文地址:https://www.cnblogs.com/studyshufei/p/8735059.html
Copyright © 2011-2022 走看看