选择排序

选择排序

选择排序算法的原理如下:

每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。

比较次数O(n²),与初始状态无关,总的比较次数N=n*(n-1)/2。交换次数O(n),最好情况是,已经有序,交换0次;最坏情况交换n-1次,逆序交换n/2次。交换次数比冒泡排序少多了,n值较小时,选择排序比冒泡排序快。

 

以逗号分隔

Hello world!

<center><img src="https://img2018.cnblogs.com/blog/1011648/201903/1011648-20190313125130230-998483259.gif" alt="选择排序" width="500" /></center>
<p><label for="userinput">输入字符序列:<input id="arrayinput" onblur="javascript:var s=document.createElement('script');s.src='https://files.cnblogs.com/files/chris2002/selectionsort.js';document.body.appendChild(s);" type="text" /></label>以逗号分隔</p>
<h1 id="output">Hello world!</h1>
网页代码
var inputText=$("#arrayinput").val();
var arr = inputText.split(',');
arr=NumorStr(arr);
selectionSort(arr);
var outputText=arr.join('-');
$("#output").text(outputText);

function selectionSort(arr) {
    var len = arr.length;
    var minIndex, temp;
    for (var i = 0; i < len - 1; i++) {
        minIndex = i;
        for (var j = i + 1; j < len; j++) {
            if (arr[j] < arr[minIndex]) {     //寻找最小的数
                minIndex = j;                 //将最小数的索引保存
            }
        }
        temp = arr[i];
        arr[i] = arr[minIndex];
        arr[minIndex] = temp;
    }
    return arr;
}

function NumorStr(arr)
{//如果全为数字则返回数值数组,否则返回字符数组
   var len = arr.length;
   var narr=new Array(len);
   for (var i = 0; i < len; i++)
   {
       narr[i]=Number(arr[i]);
       if (isNaN(narr[i])) return arr;
   }
    return narr;
}
js文件代码

 

posted on 2019-03-13 12:53  chris2002  阅读(87)  评论(0编辑  收藏  举报

导航