• JavaScript 数组(二)数组练习


    1、求一组数中的最大值和最小值,以及所在位置(最大值和最小值在这组数中的位置)

     1 var numbers = [120, 13, 101, 88, 10, 25];
     2     var max = numbers[0];
     3     var min = numbers[0];
     4     // 最大值的索引
     5     var maxIndex = 0;
     6     // 最小值的索引
     7     var minIndex = 0;
     8 
     9     for (var i = 1; i < numbers.length; i++) {
    10       // 找大的数
    11       if (max < numbers[i]) {
    12         max = numbers[i];
    13         maxIndex = i;
    14       }
    15       // 找小的数
    16       if (min > numbers[i]) {
    17         min = numbers[i];
    18         minIndex = i;
    19       }
    20     }
    21     console.log(max, min);
    22     console.log(maxIndex, minIndex);

    2、将字符串数组用 | 或其他符号分割

    1 var names = ['西伯利亚狼', '灰狼', '土狼', '大尾巴狼', '狗头老高'];
    2 // 往第二个元素之前加分隔符
    3     var seperator = '|';     // 分隔符 
    4     var str = names[0];
    5     for (var i = 1; i < names.length; i++) {
    6       str += seperator + names[i];
    7     }
    8     console.log(str);

    3、翻转数组   1,2,3,4  -> 4,3,2,1

    1 var numbers = [4, 5, 7, 9];   // 生成一个新的数组  数组中存储 9 7 5 4
    2     var newArray = [];
    3     for (var i = numbers.length - 1; i >= 0; i--) {
    4       newArray[newArray.length] = numbers[i];
    5     }
    6     console.log(newArray);

    4、冒泡排序

     1   // 冒泡排序    -- 从小到大的排序
     2     var numbers = [1, 3, 5, 2, 4];
     3     var count = 0;   // 记录循环的次数
     4     // 外层循环:控制趟数,每一趟找到一个最大值
     5     for (var i = 0; i < numbers.length - 1; i++) {
     6       count++;
     7       // 内层循环:控制比较的次数,并且判断两个数的大小,把大的数往后移动,小的数往前移动
     8       for (var j = 0; j < numbers.length - 1 - i; j++) {
     9         count++;
    10         // 两两比较     从小到大排序 
    11         if (numbers[j] > numbers[j + 1]) {
    12           // 交换位置
    13           var tmp = numbers[j];
    14           numbers[j] = numbers[j + 1];
    15           numbers[j + 1] = tmp;
    16         }
    17       }
    18     }
    19     console.log(numbers);
    20     console.log(count);

    5、冒泡排序——优化

     1   var numbers = [1, 3, 5, 2, 4];
     2     var count = 0; // 记录循环的次数
     3     // 外层循环:控制趟数,每一趟找到一个最大值
     4     for (var i = 0; i < numbers.length - 1; i++) {
     5       // 假设数据排好顺序了
     6       var isSort = true;
     7       count++;
     8       // 内层循环:控制比较的次数,并且判断两个数的大小,把大的数往后移动,小的数往前移动
     9       for (var j = 0; j < numbers.length - 1 - i; j++) {
    10         count++;
    11         // 两两比较     从小到大排序 
    12         if (numbers[j] > numbers[j + 1]) {
    13           // 没有排好 
    14           isSort = false;
    15           // 交换位置
    16           var tmp = numbers[j];
    17           numbers[j] = numbers[j + 1];
    18           numbers[j + 1] = tmp;
    19         }
    20       }
    21       // 某一趟结束,判断一下排序是否结束
    22       // 如何判断排序是否排好,根据是否发生了数据交换,如果发生了数据交换说明没有排好
    23       if (isSort) {
    24         // 如果排好顺序
    25         break;
    26       }
    27     }
    28     console.log(numbers);
    29     console.log(count);

    4、

  • 相关阅读:
    while循环学习之统计流量
    MySQL的启动脚本
    UVA 725 Division
    UVA 712 S-tree
    UVA 514
    字典树
    UVA 1595 multimap 的应用
    C++ map 和 multimap
    浮点数
    UVA 227
  • 原文地址:https://www.cnblogs.com/niujifei/p/11320203.html
Copyright © 2020-2023  润新知