微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript数据结构与算法--基本排序算法冒泡、选择、排序及效率比较

javascript数据结构与算法--基本排序算法(冒泡、选择、排序)及效率比较

一、数组测试平台

javascript数据结构与算法--基本排序(封装基本数组的操作),封装常规数组操作的函数,比如:插入新数据,显示数组数据,还有交换数组元素等操作来调用不同的排序算法

 

.dataStore =.pos = 0;一个索引值,认为0,从第一个开始 .numElements = numElements; .insert = insert;一个元素的方法 .toString = toString;显示数组中所有元素 .clear = clear; .setData = setData;生成了存储在数组中的随机数字 .swap = swap; .bubbleSort = ( i = 0; i < numElements.length; ++.dataStore[i] =<span style="color: #0000ff;">function<span style="color: #000000;"> setData() {
<span style="color: #0000ff;">for
(<span style="color: #0000ff;">var
i = 0; i < <span style="color: #0000ff;">this
.numElements; ++<span style="color: #000000;">i) {
<span style="color: #0000ff;">this
.dataStore[i] = Math.floor(Math.random() *<span style="color: #000000;">
(
<span style="color: #0000ff;">this
.numElements+1<span style="color: #000000;">));
}
}

<span style="color: #0000ff;">function<span style="color: #000000;"> clear() {
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var i = 0; i < <span style="color: #0000ff;">this.dataStore.length; ++<span style="color: #000000;">i) {
<span style="color: #0000ff;">this.dataStore[i] = 0<span style="color: #000000;">;
}
}

<span style="color: #0000ff;">function<span style="color: #000000;"> insert(element) {
<span style="color: #0000ff;">this.dataStore[<span style="color: #0000ff;">this.pos++] =<span style="color: #000000;"> element;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> toString() {
<span style="color: #0000ff;">var retstr = ""<span style="color: #000000;">;
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var i = 0; i < <span style="color: #0000ff;">this.dataStore.length; ++<span style="color: #000000;">i) {
retstr += <span style="color: #0000ff;">this.dataStore[i] + " "<span style="color: #000000;">;
<span style="color: #0000ff;">if (i > 0 && i % 10 == 0<span style="color: #000000;">) {
retstr += "\n"<span style="color: #000000;">;
}
}
<span style="color: #0000ff;">return<span style="color: #000000;"> retstr;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> swap(arr,index1,index2) {
<span style="color: #0000ff;">var temp =<span style="color: #000000;"> arr[index1];
arr[index1] =<span style="color: #000000;"> arr[index2];
arr[index2] =<span style="color: #000000;"> temp;
}
<span style="color: #008000;">//<span style="color: #008000;">测试生成一组数组数据(随机数)
<span style="color: #0000ff;">var numElements = 100<span style="color: #000000;">;
<span style="color: #0000ff;">var myNums = <span style="color: #0000ff;">new<span style="color: #000000;"> CArray(numElements);
myNums.setData();
console.log(myNums.toString());

17 94 81 80 25 24 73 76 24 35 81 63 81 59 4 76 30 47 73 98 18 54 36 53 47 22 60 88 41 66 24 73 94 40 45 72 74 14 61 92 48 36 12 42 11 12 82 24 84 60 1 17 98 63 36 84 13 18 50 89 26 98 1 6 54 52 69 6 52 98 14 79 28 19 69 76 99 97 100 10 7 24 54 81 73 18 21 45 73 66 30 28 56 54 21 88 31 20 86 48

 

二、冒泡排序算法

我们先来了解一下冒泡排序算法,它是最慢的排序算法之一,但也是一种最容易实现的排序算法。
之所以叫冒泡排序是因为使用这种排序算法排序时,数据值会像气泡一样从数组的一端漂浮到另一端。
假设正在将一组数字按照升序排列,较大的值会浮动到数组的右侧,而较小的值则会浮动到数组的左侧。
之所以会产生这种现象是因为算法会多次在数组中移动,比较相邻的数据,当左侧值大于右侧值时将它们进行互换。

JS代码如下:

.dataStore =.pos = 0;一个索引值,认为0,从第一个开始 .numElements = numElements; .insert = insert;一个元素的方法 .toString = toString;显示数组中所有元素 .clear = clear; .setData = setData;生成了存储在数组中的随机数字 .swap = swap; .bubbleSort = ( i = 0; i < numElements.length; ++.dataStore[i] =<span style="color: #0000ff;">function<span style="color: #000000;"> setData() {
<span style="color: #0000ff;">for
(<span style="color: #0000ff;">var
i = 0; i < <span style="color: #0000ff;">this
.numElements; ++<span style="color: #000000;">i) {
<span style="color: #0000ff;">this
.dataStore[i] = Math.floor(Math.random() *<span style="color: #000000;">
(
<span style="color: #0000ff;">this
.numElements+1<span style="color: #000000;">));
}
}

<span style="color: #0000ff;">function<span style="color: #000000;"> clear() {
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var i = 0; i < <span style="color: #0000ff;">this.dataStore.length; ++<span style="color: #000000;">i) {
<span style="color: #0000ff;">this.dataStore[i] = 0<span style="color: #000000;">;
}
}

<span style="color: #0000ff;">function<span style="color: #000000;"> insert(element) {
<span style="color: #0000ff;">this.dataStore[<span style="color: #0000ff;">this.pos++] =<span style="color: #000000;"> element;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> toString() {
<span style="color: #0000ff;">var retstr = ""<span style="color: #000000;">;
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var i = 0; i < <span style="color: #0000ff;">this.dataStore.length; ++<span style="color: #000000;">i) {
retstr += <span style="color: #0000ff;">this.dataStore[i] + " "<span style="color: #000000;">;
<span style="color: #0000ff;">if (i > 0 && i % 10 == 0<span style="color: #000000;">) {
retstr += "\n"<span style="color: #000000;">;
}
}
<span style="color: #0000ff;">return<span style="color: #000000;"> retstr;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> swap(arr,index2) {
<span style="color: #0000ff;">var temp =<span style="color: #000000;"> arr[index1];
arr[index1] =<span style="color: #000000;"> arr[index2];
arr[index2] =<span style="color: #000000;"> temp;
}

<span style="color: #0000ff;">function<span style="color: #000000;"><span style="color: #ff0000;"> bubbleSort() {
<span style="color: #0000ff;">var numElements = <span style="color: #0000ff;">this<span style="color: #000000;">.dataStore.length;
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var outer = numElements; outer >= 2; --<span style="color: #000000;">outer) {
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var inner = 0; inner <= outer-1; ++<span style="color: #000000;">inner) {
<span style="color: #0000ff;">if (<span style="color: #0000ff;">this.dataStore[inner] > <span style="color: #0000ff;">this.dataStore[inner+1<span style="color: #000000;">]) {
swap(<span style="color: #0000ff;">this.dataStore,inner,inner+1<span style="color: #000000;">);
}
}
console.log("outer为" + outer + ": " + <span style="color: #0000ff;">this<span style="color: #000000;">.toString());
}
}

<span style="color: #008000;">//<span style="color: #008000;">测试冒泡排序算法
<span style="color: #0000ff;">var numElements = [2,4,1,3<span style="color: #000000;">];
<span style="color: #0000ff;">var myNums = <span style="color: #0000ff;">new<span style="color: #000000;"> CArray(numElements);
console.log("原来的数组:"+<span style="color: #000000;">myNums.toString());
myNums.bubbleSort();
console.log("排序后的数组:"+myNums.toString());

代码分析如下:

原先数组为 [2,3<span style="color: #000000;">];

1<span style="color: #000000;">. outer为4的时候
1. inner为0,值为2,inner+<span style="color: #000000;">1为1,值为4,不符合,不交换。
2. inner为1,值为4,inner+1为2,值为1,交换,数组变为[2,3<span style="color: #000000;">]
3. inner为2,值为4,inner+1为3,值为3,交换 数组变为[2,3,4<span style="color: #000000;">]
4. inner为3,值为4,inner+<span style="color: #000000;">1为4,不符合 不交换。

2<span style="color: #000000;">. outer为3的时候
1. inner为0,值为2,inner+1为1,值为1,交换 数组变为[1,2,4<span style="color: #000000;">]
2. inner为1,值为2,inner+<span style="color: #000000;">1为2,值为3 不符合 不交换。
3. inner为2,值为3,inner+<span style="color: #000000;">1为3,值为4,不符合 不交换。

再下面继续循环都不符合条件,所以如上就是最后一步了。这就是冒泡排序。

 

三、选择排序算法

选择排序从数组的开头开始,将第一个元素和其他元素进行比较。
检查完所有元素后,最小的元素会被放到数组的第一个位置,然后算法会从第二个位置继续。
这个过程一直进行,当进行到数组的倒数第二个位置时,所有的数据便完成了排序。

选择排序会用到嵌套循环。
外循环从数组的第一个元素移动到倒数第二个元素;
内循环从第二个数组元素移动到最后一个元素,查找比当前外循环所指向的元素小的元素。
每次内循环迭代后,数组中最小的值都会被赋值到合适的位置。

JS代码如下:

.dataStore =.pos = 0;一个索引值,认为0,从第一个开始 .numElements = numElements; .insert = insert;一个元素的方法 .toString = toString;显示数组中所有元素 .clear = clear; .setData = setData;生成了存储在数组中的随机数字 .swap = swap; .selectionSort = selectionSort; ( i = 0; i < numElements.length; ++.dataStore[i] =<span style="color: #0000ff;">function<span style="color: #000000;"> setData() {
<span style="color: #0000ff;">for
(<span style="color: #0000ff;">var
i = 0; i < <span style="color: #0000ff;">this
.numElements; ++<span style="color: #000000;">i) {
<span style="color: #0000ff;">this
.dataStore[i] = Math.floor(Math.random() *<span style="color: #000000;">
(
<span style="color: #0000ff;">this
.numElements+1<span style="color: #000000;">));
}
}

<span style="color: #0000ff;">function<span style="color: #000000;"> clear() {
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var i = 0; i < <span style="color: #0000ff;">this.dataStore.length; ++<span style="color: #000000;">i) {
<span style="color: #0000ff;">this.dataStore[i] = 0<span style="color: #000000;">;
}
}

<span style="color: #0000ff;">function<span style="color: #000000;"> insert(element) {
<span style="color: #0000ff;">this.dataStore[<span style="color: #0000ff;">this.pos++] =<span style="color: #000000;"> element;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> toString() {
<span style="color: #0000ff;">var retstr = ""<span style="color: #000000;">;
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var i = 0; i < <span style="color: #0000ff;">this.dataStore.length; ++<span style="color: #000000;">i) {
retstr += <span style="color: #0000ff;">this.dataStore[i] + " "<span style="color: #000000;">;
<span style="color: #0000ff;">if (i > 0 && i % 10 == 0<span style="color: #000000;">) {
retstr += "\n"<span style="color: #000000;">;
}
}
<span style="color: #0000ff;">return<span style="color: #000000;"> retstr;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> swap(arr,index2) {
<span style="color: #0000ff;">var temp =<span style="color: #000000;"> arr[index1];
arr[index1] =<span style="color: #000000;"> arr[index2];
arr[index2] =<span style="color: #000000;"> temp;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> selectionSort() {
<span style="color: #0000ff;">var<span style="color: #000000;"> min,temp;
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var outer = 0; outer <= <span style="color: #0000ff;">this.dataStore.length-2; ++<span style="color: #000000;">outer) {
min =<span style="color: #000000;"> outer;
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var inner = outer + 1;inner <= <span style="color: #0000ff;">this.dataStore.length-1; ++<span style="color: #000000;">inner) {
<span style="color: #0000ff;">if (<span style="color: #0000ff;">this.dataStore[inner] < <span style="color: #0000ff;">this<span style="color: #000000;">.dataStore[min]) {
min =<span style="color: #000000;"> inner;
}
}
swap(<span style="color: #0000ff;">this<span style="color: #000000;">.dataStore,outer,min);
console.log("第"+outer +"次:"+<span style="color: #000000;">myNums.toString());
}
}

<span style="color: #008000;">//<span style="color: #008000;">测试排序算法
<span style="color: #0000ff;">var numElements = [2,3<span style="color: #000000;">];
<span style="color: #0000ff;">var myNums = <span style="color: #0000ff;">new<span style="color: #000000;"> CArray(numElements);
console.log("原来的数组:"+<span style="color: #000000;">myNums.toString());
myNums.selectionSort();
console.log("排序后的数组:"+myNums.toString());

原来的数组: 4 1 31 2 31 2 31 2 3 41 2 3 4

四、插入排序算法

插入排序有两个循环。
外循环将数组元素挨个移动,而内循环则对外循环中选中的元素及它前面的那个元素进行比较。
如果外循环中选中的元素比内循环中选中的元素小,那么数组元素会向右移动,为外循环中的这个元素腾出位置

.dataStore =.pos = 0;一个索引值,认为0,从第一个开始 .numElements = numElements; .insert = insert;一个元素的方法 .toString = toString;显示数组中所有元素 .clear = clear; .setData = setData;生成了存储在数组中的随机数字 .swap = swap; .insertionSort = insertionSort; ( i = 0; i < numElements.length; ++.dataStore[i] =<span style="color: #0000ff;">function<span style="color: #000000;"> setData() {
<span style="color: #0000ff;">for
(<span style="color: #0000ff;">var
i = 0; i < <span style="color: #0000ff;">this
.numElements; ++<span style="color: #000000;">i) {
<span style="color: #0000ff;">this
.dataStore[i] = Math.floor(Math.random() *<span style="color: #000000;">
(
<span style="color: #0000ff;">this
.numElements+1<span style="color: #000000;">));
}
}

<span style="color: #0000ff;">function<span style="color: #000000;"> clear() {
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var i = 0; i < <span style="color: #0000ff;">this.dataStore.length; ++<span style="color: #000000;">i) {
<span style="color: #0000ff;">this.dataStore[i] = 0<span style="color: #000000;">;
}
}

<span style="color: #0000ff;">function<span style="color: #000000;"> insert(element) {
<span style="color: #0000ff;">this.dataStore[<span style="color: #0000ff;">this.pos++] =<span style="color: #000000;"> element;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> toString() {
<span style="color: #0000ff;">var retstr = ""<span style="color: #000000;">;
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var i = 0; i < <span style="color: #0000ff;">this.dataStore.length; ++<span style="color: #000000;">i) {
retstr += <span style="color: #0000ff;">this.dataStore[i] + " "<span style="color: #000000;">;
<span style="color: #0000ff;">if (i > 0 && i % 10 == 0<span style="color: #000000;">) {
retstr += "\n"<span style="color: #000000;">;
}
}
<span style="color: #0000ff;">return<span style="color: #000000;"> retstr;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> swap(arr,index2) {
<span style="color: #0000ff;">var temp =<span style="color: #000000;"> arr[index1];
arr[index1] =<span style="color: #000000;"> arr[index2];
arr[index2] =<span style="color: #000000;"> temp;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> insertionSort() {
<span style="color: #0000ff;">var<span style="color: #000000;"> temp,inner;
<span style="color: #008000;">//<span style="color: #008000;">外循环将数组元素挨个移动
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var outer = 1; outer <= <span style="color: #0000ff;">this.dataStore.length-1; ++<span style="color: #000000;">outer) {
temp = <span style="color: #0000ff;">this.dataStore[outer];<span style="color: #008000;">//<span style="color: #008000;">外循环选中的元素temp
inner =<span style="color: #000000;"> outer;
<span style="color: #008000;">//<span style="color: #008000;">内循环对外循环中选中的元素temp与temp前面的元素一个个进行比较。
<span style="color: #008000;">//<span style="color: #008000;">如果外循环中选中的元素temp比内循环中选中的元素小,那么数组元素会向右移动,为外循环中的这个元素腾出位置
<span style="color: #0000ff;">while (inner > 0 && (<span style="color: #0000ff;">this.dataStore[inner-1] >=<span style="color: #000000;"> temp)) {
<span style="color: #0000ff;">this.dataStore[inner] = <span style="color: #0000ff;">this.dataStore[inner-1<span style="color: #000000;">];
--<span style="color: #000000;">inner;
}
<span style="color: #0000ff;">this.dataStore[inner] =<span style="color: #000000;"> temp;
console.log("第"+outer+"次:"+<span style="color: #000000;">myNums.toString());
}
}

<span style="color: #008000;">//<span style="color: #008000;">测试排序算法
<span style="color: #0000ff;">var numElements = [9,8,6,5,4<span style="color: #000000;">];
<span style="color: #0000ff;">var myNums = <span style="color: #0000ff;">new<span style="color: #000000;"> CArray(numElements);
console.log("原来的数组:"+<span style="color: #000000;">myNums.toString());
myNums.insertionSort();
console.log("排序后的数组:"+myNums.toString());

原来的数组:9 8 6 2 3 5 4一个位置,给1腾位置 第1次:1 9 6 2 3 5 4一个位置,给8腾位置 第2次:1 8 9 2 3 5 4一个位置,给6腾位置 第3次:1 6 8 9 3 5 41 2 6 8 9 5 41 2 3 6 8 9 41 2 3 5 6 8 9 1 2 3 4 5 6 8 9排序后的数组:1 2 3 4 5 6 8 9

 

五、基本排序算法的效率比较

.dataStore =.pos = 0;一个索引值,认为0,从第一个开始 .numElements = numElements; .insert = insert;一个元素的方法 .toString = toString;显示数组中所有元素 .clear = clear; .setData = setData;生成了存储在数组中的随机数字 .swap = swap; .bubbleSort = bubbleSort; .selectionSort = selectionSort; .insertionSort = insertionSort; ( i = 0; i < numElements.length; ++.dataStore[i] =<span style="color: #0000ff;">function<span style="color: #000000;"> setData() {
<span style="color: #0000ff;">for
(<span style="color: #0000ff;">var
i = 0; i < <span style="color: #0000ff;">this
.numElements; ++<span style="color: #000000;">i) {
<span style="color: #0000ff;">this
.dataStore[i] = Math.floor(Math.random() *<span style="color: #000000;">
(
<span style="color: #0000ff;">this
.numElements+1<span style="color: #000000;">));
}
}

<span style="color: #0000ff;">function<span style="color: #000000;"> clear() {
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var i = 0; i < <span style="color: #0000ff;">this.dataStore.length; ++<span style="color: #000000;">i) {
<span style="color: #0000ff;">this.dataStore[i] = 0<span style="color: #000000;">;
}
}

<span style="color: #0000ff;">function<span style="color: #000000;"> insert(element) {
<span style="color: #0000ff;">this.dataStore[<span style="color: #0000ff;">this.pos++] =<span style="color: #000000;"> element;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> toString() {
<span style="color: #0000ff;">var retstr = ""<span style="color: #000000;">;
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var i = 0; i < <span style="color: #0000ff;">this.dataStore.length; ++<span style="color: #000000;">i) {
retstr += <span style="color: #0000ff;">this.dataStore[i] + " "<span style="color: #000000;">;
<span style="color: #0000ff;">if (i > 0 && i % 10 == 0<span style="color: #000000;">) {
retstr += "\n"<span style="color: #000000;">;
}
}
<span style="color: #0000ff;">return<span style="color: #000000;"> retstr;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> swap(arr,index2) {
<span style="color: #0000ff;">var temp =<span style="color: #000000;"> arr[index1];
arr[index1] =<span style="color: #000000;"> arr[index2];
arr[index2] =<span style="color: #000000;"> temp;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> bubbleSort() {
<span style="color: #0000ff;">var numElements = <span style="color: #0000ff;">this<span style="color: #000000;">.dataStore.length;
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var outer = numElements; outer >= 2; --<span style="color: #000000;">outer) {
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var inner = 0; inner <= outer-1; ++<span style="color: #000000;">inner) {
<span style="color: #0000ff;">if (<span style="color: #0000ff;">this.dataStore[inner] > <span style="color: #0000ff;">this.dataStore[inner+1<span style="color: #000000;">]) {
swap(<span style="color: #0000ff;">this.dataStore,inner+1<span style="color: #000000;">);
}
}
<span style="color: #008000;">//<span style="color: #008000;"> console.log("outer为" + outer + ": " + this.toString());
<span style="color: #000000;"> }
}

<span style="color: #0000ff;">function<span style="color: #000000;"> selectionSort() {
<span style="color: #0000ff;">var<span style="color: #000000;"> min,min);
<span style="color: #008000;">//<span style="color: #008000;"> console.log("第"+outer +"次:"+this.toString());
<span style="color: #000000;"> }
}

<span style="color: #0000ff;">function<span style="color: #000000;"> insertionSort() {
<span style="color: #0000ff;">var<span style="color: #000000;"> temp,inner;
<span style="color: #008000;">//<span style="color: #008000;">外循环将数组元素挨个移动
<span style="color: #0000ff;">for (<span style="color: #0000ff;">var outer = 1; outer <= <span style="color: #0000ff;">this.dataStore.length-1; ++<span style="color: #000000;">outer) {
temp = <span style="color: #0000ff;">this.dataStore[outer];<span style="color: #008000;">//<span style="color: #008000;">外循环选中的元素
inner =<span style="color: #000000;"> outer;
<span style="color: #008000;">//<span style="color: #008000;">内循环则对外循环中选中的元素与它前面的那个元素进行比较。
<span style="color: #008000;">//<span style="color: #008000;">如果外循环中选中的元素比内循环中选中的元素小,那么数组元素会向右移动,为外循环中的这个元素腾出位置
<span style="color: #0000ff;">while (inner > 0 && (<span style="color: #0000ff;">this.dataStore[inner-1] >=<span style="color: #000000;"> temp)) {
<span style="color: #0000ff;">this.dataStore[inner] = <span style="color: #0000ff;">this.dataStore[inner-1<span style="color: #000000;">];
--<span style="color: #000000;">inner;
}
<span style="color: #0000ff;">this.dataStore[inner] =<span style="color: #000000;"> temp;
<span style="color: #008000;">//<span style="color: #008000;"> console.log("第"+outer+"次:"+this.toString());
<span style="color: #000000;"> }
}

<span style="color: #008000;">/<span style="color: #008000;">测试冒泡、选择、插入算法的效率<span style="color: #008000;">/
<span style="color: #0000ff;">var numElements = 10000<span style="color: #000000;">;
<span style="color: #0000ff;">var nums = <span style="color: #0000ff;">new<span style="color: #000000;"> CArray(numElements);
nums.setData();
<span style="color: #0000ff;">var start = <span style="color: #0000ff;">new<span style="color: #000000;"> Date().getTime();
nums.bubbleSort();
<span style="color: #0000ff;">var stop = <span style="color: #0000ff;">new<span style="color: #000000;"> Date().getTime();
<span style="color: #0000ff;">var elapsed = stop -<span style="color: #000000;"> start;
console.log("用冒泡算法,排序 " + numElements + " 个元素耗时 : " + elapsed + " milliseconds."<span style="color: #000000;">);

start = <span style="color: #0000ff;">new<span style="color: #000000;"> Date().getTime();
nums.selectionSort();
stop = <span style="color: #0000ff;">new<span style="color: #000000;"> Date().getTime();
elapsed = stop -<span style="color: #000000;"> start;
console.log("用选择算法,排序 " + numElements + " 个元素耗时: " + elapsed + " milliseconds."<span style="color: #000000;">);

start = <span style="color: #0000ff;">new<span style="color: #000000;"> Date().getTime();
nums.insertionSort();
stop = <span style="color: #0000ff;">new<span style="color: #000000;"> Date().getTime();
elapsed = stop -<span style="color: #000000;"> start;
console.log("用插入算法,排序 " + numElements + " 个元素耗时: " + elapsed + " milliseconds.");

 

运行结果:

 

 选择排序和插入排序要比冒泡排序快,插入排序是这三种算法中最快的。

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐