冒泡排序和快速排序

2018-11-23  本文已影响0人  A落儿
  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.快速排序

上一篇下一篇

猜你喜欢

热点阅读