码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript(四)------排序

时间:2018-09-15 21:19:43      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:charset   保存   建立   选择   快速   分配   push   空间   交换   

快速排序

   1、在数组中找到基准点,其他数与之比较

    2、建立两个空数组,小于基准点的数存储在左边数组,大于基准点的数存储在右边数组

    3、拼接数组,即将左边数组、基准点、右边数组拼接起来,拼接的同时左边数组与右边数组继续执行1、2两个步骤,直到最后完成数组的最终排序

特点:快速,常用。

缺点:需要声明两个数组,浪费了内存空间

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>快速排序</title>
</head>
<body>
<script>
    var ary = [21,8,4,32,5];
    function quickSort(ary) {
        //如果数组长度小于等于1,无需判断直接返回即可
        if(ary.length <= 1){
            return ary;
        }
        //取基准点
        var num = Math.floor(ary.length/2);
        //取基准点的值,splic(index,1)函数可以返回数组中被删除的那个数arr[index+1]
        var numValue = ary.splice(num,1);
        var left = [];//存放比几点小的数组
        var right = [];//存放比基点大的数组
        //遍历数组,进行判断分配
        for(var i = 0;i < ary.length;i++){
            var cur = ary[i];
            if(cur < numValue){
                left.push(cur);//比基点小的数组放在左边数组
            }else{
                right.push(cur);//比基点大的数组放在右边数组
            }
        }
        //递归执行以上操作,对左右;两个数进行操作,直到数组长度小于等于1
        return quickSort(left).concat(numValue,quickSort(right));
    }
    document.write(quickSort(ary));
</script>
</body>
</html>

 

 

冒泡排序

冒泡排序思想:每一次对比相邻两个数据的大小,小的拍在前面,如果前面的数据比后面的大就交换这两个数的位置

要实现上述规则需要用到两层for循环,外层从第一个数到倒数第二个数,内层从外层的后面一个数到最后一个数

特点:简单、实用、易于理解

缺点:比较次数多,效率低

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>冒泡排序</title>
</head>
<body>
<script>
    var ary = [21,32,2,9,4];
    function bubblesort(ary) {
        for(var i = 0;i < ary.length-1;i++){
            for(var j = i+1; j < ary.length;j++){
                if(ary[i] > ary[j]){
                    var tmp = ary[i];
                    ary[i] = ary[j];
                    ary[j] = tmp;
                }
            }
        }
        return ary;
    }
    document.write(bubblesort(ary));
</script>
</body>
</html>

 

 

插入排序

插入排序的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表

排序过程大致如下:

   1、从第一个元素开始,该元素可以认为已经被排序;

   2、取出下一个元素,在已经排序的元素序列中从后向前扫描;

   3、如果该元素(已排序)大于新元素,将该元素移到下一位置;

   4、重复步骤3,直到找到已排序的元素小于或等于新元素的位置;

   5、将新元素插入到该位置后;

   6、重复步骤2~5。

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>插入排序</title>
</head>
<body>
<script>
    var arr = [21,8,4,32,5];
    function insertSort(arr){
        var len = arr.length;
        for (var i = 1; i < len; i++) {
            var key = arr[i];
            var j = i - 1;
            while (j >= 0 && arr[j] > key) {
                arr[j + 1] = arr[j];
                j--;
            }
            arr[j + 1] = key;
        }
        return arr;
    }
    document.write(insertSort(arr));
</script>
</body>
</html>

 

 

 

 

选择排序

原理:首先从原始数组中找到最小的元素,并把该元素放在数组的最前面,然后再从剩下的元素中寻找最小的元素,放在之前最小元素的后面,直到排序完毕。

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>选择排序</title>
</head>
<body>
<script>
    var arr = [21,5,6,34,2];
    function selsetSort(arr) {
        var len = arr.length;
        var index;
        for (var i = 0; i < len - 1; i++) {
            index = i;
            for (var j = i + 1; j < len; j++) {
                if (arr[index] > arr[j]) {//寻找最小值
                    index = j;//保存最小值的索引
                }
            }
            if (index != i) {
                var temp = arr[i];
                arr[i] = arr[index];
                arr[index] = temp;
            }
        }
        return arr;
    }
    document.write(selsetSort(arr));
</script>
</body>
</html>

 

JavaScript(四)------排序

标签:charset   保存   建立   选择   快速   分配   push   空间   交换   

原文地址:https://www.cnblogs.com/wsjyztx123/p/9647945.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!