美文网首页
冒泡排序和快速排序

冒泡排序和快速排序

作者: A落儿 | 来源:发表于2018-11-23 11:12 被阅读0次
    1. 冒泡排序(双for,左比右)
      冒泡排序是比较任何两个相邻的项。如果第一个比第二个打,则交换他们。元素项向上移动至正确顺序,就好像气泡升至表面一样,因此得名
    let arr = [1, 66, 95, 25, 18, 8, 41, 88, 4, 37, 6, 72];
        function arrsort(arr) {
          for (let i = 0; i < arr.length; i++) {
            for (let j = 0; j < arr.length; j++) {
              let first = arr[j];
              let last = arr[j + 1];
              let value = 0;
              if (first > last) {
                value = first;
                arr[j] = arr[j + 1];
                arr[j + 1] = value;
              }
            }
          }
          return arr
        }
        window.alert(arrsort(arr))
    
    //创建一个数组来表示待排序和搜索的数据结构
        function ArrayList() {
          var arr = [];
          this.insert = function (item) {//创建一个插入方法向数据结构中添加元素,生成一个新的数组
            arr.push(item)
          }
    
          this.toString = function () {//将数组中的元素拼接成一个字符串
            return arr.join()
          }
    
          this.bubbleSort = function bubbleSort() {//创建一个冒泡排序的函数
            var length = arr.length;
            for (let i = 0; i < length; i++) {//从数组的最后一位迭代至最后一位,决定数组中进行了多少轮排序,轮数和数组长度一致
              for (let j = 0; j < length - 1; j++) {//从第一位迭代至倒数第二位,进行的是当前项和下一项的比较
                if (arr[j] > arr[j + 1]) {//比较两项的大小
                  swap(arr, j, j + 1)//调用一个函数,顺序如果不对就交互他们的位置
                }
              }
            }
          }
    
          //冒泡排序改进,减去循环中已跑过的轮数
          this.modifiedBubbleSort = function(){
            var length = arr.length;
            for(let i = 0 ;i<length;i++){
              for(let j = 0 ;j<length-1-i;j++){
                if(arr[j]>arr[j+1]){
                  swap(arr,j,j+1)
                }
              }
            }
          }
        }
    
        var swap = function (arr, index1, index2) {
          var aux = arr[index1];
          arr[index1] = arr[index2];
          arr[index2] = aux;
        }
    
        function creatNonSortedArray(size) {
          var arr = new ArrayList();
          for (var i = size; i > 0; i--) {
            arr.insert(i)
          }
          return arr
        }
    
        var arr = creatNonSortedArray(8);
        console.log(arr.toString())
        arr.modifiedBubbleSort()
        console.log(arr.toString())
    

    2.快速排序

    相关文章

      网友评论

          本文标题:冒泡排序和快速排序

          本文链接:https://www.haomeiwen.com/subject/vgzdqqtx.html