美文网首页
四重常见的排序方法

四重常见的排序方法

作者: 郭子web | 来源:发表于2017-12-13 17:36 被阅读0次
  • 冒泡排序
var ary=[9,4,2,8,8,8,8,8,7,6,11,0];
    function bubbleSort(arr) {
        for(var i=0;i<arr.length-1;i++){
            for(var j=i+1;j<arr.length;j++){
                if(arr[j]<arr[i]){
                    var temp;
                    temp=arr[j];
                    arr[j]=arr[i];
                    arr[i]=temp;
                }
            }
        }
        return arr;
    }
    console.log(bubbleSort(ary));
  • 快速排序
var ary=[9,4,2,8,8,8,8,8,7,6,11,0];
    function quickSort(arr) {
        if(arr.length<=1){
            return arr;
        }
        var n=parseInt(arr.length/2);
        var center=arr.splice(n,1);
        var left=[];
        var right=[];
        for (var i=0;i<arr.length;i++){
            arr[i]<center?left.push(arr[i]):right.push(arr[i]);
        }
        return quickSort(left).concat(center,quickSort(right));
    }
    console.log(quickSort(ary));
  • 插入排序
var ary=[9,4,2,8,8,8,8,8,7,6,11,0];
    function sort(arr) {
        var consult=arr.splice(0,1);
        for(var i=0;i<arr.length;i++){
            for(var j=consult.length-1;j>=0;j--){
                if(arr[i]>consult[j]){
                    consult.splice(j+1,0,arr[i]);
                    break;
                }else{
                    if(j==0){
                        consult.unshift(arr[i]);
                    }
                }
            }
        }
        return consult;
    }
    console.log(sort(ary));
  • 表格排序
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表格排序</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        table {
            width: 700px;
            text-align: center;
            margin: 100px auto;
            border-radius: 10px;
            padding: 10px;
            box-shadow: 0 0 10px darkgreen;
            font-size: 20px;
        }

        table caption {
            line-height: 50px;
            font-size: 30px;
            font-weight: 700;
        }

        table thead {
            height: 40px;
            line-height: 40px;
            background: darkgreen;
            color: #ffffff;
        }

        table thead tr {
            -webkit-user-select: none;
        }

        table thead tr th.cursor {
            cursor: pointer;
        }

        table tbody tr {
            height: 40px;
            line-height: 40px;
        }

        table tbody tr.bg0 {
            background: lightcyan;
        }

        table tbody tr.bg1 {
            background: lightpink;
        }
    </style>
</head>
<body>
<table cellpadding="0" cellspacing="0" id="tab">
    <caption>表格排序</caption>
    <thead>
    <tr>
        <th class="cursor">name</th>
        <th class="cursor">age</th>
        <th class="cursor">level</th>
        <th>sex</th>
    </tr>
    </thead>
    <tbody>

    </tbody>
</table>
<script src="../utils.js"></script>
<!--<script src="js/tab1.js"></script>-->
</body>
</html>
<script>
    var oTab=document.getElementById("tab");
    var tHead=oTab.tHead;
    var tBody=oTab.tBodies[0];
    var aRows=tBody.rows;
    var aCells=tHead.rows[0].cells;
    var data;
    var xhr=new XMLHttpRequest();
    xhr.open('GET','data.txt');
    xhr.onreadystatechange=function () {
        if(xhr.readyState===4&&/^2\d{2}$/.test(xhr.status)){
            data=utils.jsonParse(xhr.responseText);
            bindData();
        }
    };
    xhr.send();
    function bindData() {
        var frg=document.createDocumentFragment();
        for(var i=0;i<data.length;i++){
            var oTr=document.createElement("tr");
            for(var attr in data[i]){
                var oTd=document.createElement("td");
                oTd.innerHTML=data[i][attr];
                if(attr=="sex"){
                    oTd.innerHTML=data[i][attr]==0?'男':'女'
                }
                oTr.appendChild(oTd);
            }
            frg.appendChild(oTr)
        }
        tBody.appendChild(frg);
        changeColor();
        frg=null;
    }
    function changeColor() {
        for (var i=0;i<aRows.length;i++){
            aRows[i].className='bg'+i%2;
        }
    }
    for(var i=0;i<aCells.length;i++){
        aCells[i].index=i;
        aCells[i].flag=-1;
        aCells[i].onclick=function () {
            if(this.className=="cursor"){
                sort(this.index);
            }
        }
    }
    function sort(index) {
        for(var i=0;i<aCells.length;i++){
            aCells[i].flag=i==index?aCells[i].flag*-1:-1;
        }
        var ary=utils.makeArray(aRows);
        ary.sort(function (a, b) {
            a=a.cells[index].innerHTML;
            b=b.cells[index].innerHTML;
            if (isNaN(a) || isNaN(b)){
                return a.localeCompare(b)*aCells[index].flag;
            }
            return (a-b)*aCells[index].flag;
        });
        for (var i=0;i<ary.length;i++){
            tBody.appendChild(ary[i]);
        }
        changeColor();
    }
</script>

/*json数据*/
[{"name":"郭靖","age":18,"level":98,"sex":0},{"name":"黄蓉","age":16,"level":88,"sex":1},{"name":"杨康","age":17,"level":78,"sex":0},{"name":"梅超风","age":40,"level":90,"sex":1},{"name":"洪七公","age":60,"level":100,"sex":0},{"name":"穆念慈","age":20,"level":50,"sex":1}]

相关文章

  • 四重常见的排序方法

    冒泡排序 快速排序 插入排序 表格排序

  • 实现几种常见排序方法

    Java实现几种常见排序方法 日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还...

  • 插入排序

    插入排序也是一类非常常见的排序方法,它主要包含直接插入、折半插入和Shell排序等几种常见排序方法。 直接插入排序...

  • 排序算法之交换排序

    利用交换数据元素的位置进行排序的方法称为交换排序。常见的交换排序方法有冒泡排序和快速排序。 1. 冒泡排序 1.1...

  • 常见的排序方法

    桶排序 时间复杂度是 O(N + M) 冒泡排序 时间复杂度是 O(N^2) 冒泡排序的基本思想是:每次比较两个相...

  • 冒泡排序算法(C语言)

    排序(冒泡排序算法) 本专题将总结数据结构中几种常见的基本排序方法(后续的几种排序方法将会在整理后发布),意图将计...

  • Java实现几种常见排序方法

    日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、鸡尾酒排序、桶排序...

  • Java常用排序算法

    日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、鸡尾酒排序、桶排序...

  • Python 实现的十大经典排序算法

    一、需求: 对一个无序数组,根据某个关键字排序; 二、划分方法: 三、常见排序方法 3.1 选择排序(Select...

  • 常见的几种排序方法实现

    常见的几种排序方法:冒泡排序、选择排序、插入排序、选择排序1、冒泡排序:每次比较相邻的像个数,值小的往前冒泡,时间...

网友评论

      本文标题:四重常见的排序方法

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