zoukankan      html  css  js  c++  java
  • 数组排序【冒泡排序、快速排序、选择排序】

    在工作中遇到了排序问题,随后就总了了几种排序方式【冒泡排序、快速排序、选择排序】

    【冒泡排序】

      原理:比较相邻的两个元素,将值大的交换至右侧

    // 冒泡排序:比较相邻的两个元素,将值大的交换至右边
            var arr = [1,20,5,62,8,2,45];
            function bubbleSort(obj){
                for(var i = 0; i < obj.length; i++){
                    for(var j = 0; j < obj.length -i -1; j++){
                        if(obj[j] > obj[j+1] ){
                            var temp = obj[j];
                            obj[j] = obj[j+1];
                            obj[j+1] = temp;
                        }
                    }
                }
                return obj;
            }
            document.write("冒泡排序" + bubbleSort(arr) + "<br>");

    【快速排序】

      原理:1、选择数组的一个中间值,分成左右两个数组,

         2、用中间值与数组的值进行比较,比中间值小的放到左数组,比中间值大的放到右数组

           3、最后将左数组、中间值与右数组连接起来

     //快速排序:选择中间值,分左右两个数组,左数组的都比右数组的小
            var arr = [1,20,5,62,8,2,45];
            function quickSort(arr){
                if(arr.length <= 1){
                    return arr;
                }
                var middleIndex = Math.floor(arr.length / 2);
                var middleVal = arr.splice(middleIndex, 1)[0];
                var left = [], right = [];
                for(var i = 0; i < arr.length; i++){
                    if(arr[i] < middleVal){
                        left.push(arr[i]);
                    }else{
                        right.push(arr[i]);
                    }
                }
                return quickSort(left).concat([middleVal], quickSort(right))
            }
            document.write("快速排序:" + quickSort(arr) + "<br>");

    【选择排序】

      原理:把未选择中的最小值存放在起始位置,然后在未排序中找到最小的值,放在已排序的最后

     //选择排序:把未选择中的最小值存放在起始位置,然后在未排序中找到最小的值,放在已排序的最后
            var selectSortArr = [1,20,5,62,8,2,45];
            function selectSort(arr){
                if(arr.length <= 1){
                    return arr;
                }
                var minIndex, temp;
                console.log(arr)
                for(var i = 0; i< arr.length; i++){
                    minIndex = i;
                    for(var j = i + 1; j < arr.length; j++){
                        if(arr[j] < arr[minIndex]){
                            minIndex = j;
                        }
                    }
                    temp = arr[i];
                    arr[i] = arr[minIndex];
                    arr[minIndex] = temp;
                    console.log(arr)
                }
                return arr;
            }
            document.write("选择排序:" + selectSort(selectSortArr));

     

    -THE END-

  • 相关阅读:
    vim替换
    vim 常用快捷键 二
    vim撤销
    让你提升命令行效率的 Bash 快捷键
    快速正确的安装 Ruby, Rails 运行环境
    STL的常用算法
    Ubuntu下Postfix邮件服务器安装及基本的设置
    vim 参考手册
    指针 多维数组 数组指针 指针数组
    数学小抄
  • 原文地址:https://www.cnblogs.com/menggirl23/p/10243474.html
Copyright © 2011-2022 走看看