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

86JS原生:数组3种排序方法

时间:2019-06-03 14:32:04      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:http   htm   https   mat   一个   document   break   大于   最大的   

一、交换排序
1、冒泡排序:从第一项开始,与它后面的每一项进行比较,如果大于后面的项,则交换位置。第一轮把最大的一个找出来,放到最后面,第二轮把次大的一个找出来,放到倒数第二的位置。

```html:run
<!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; i++){//正在进行第几次循环
for(var j=0; j<ary.length-1-i; j++){//本次循环需要执行几次
if(ary[j]>ary[j+1]){
var tmp=ary[j];
ary[j]=ary[j+1];
ary[j+1]=tmp;
}
}
}
return ary;
}
document.write(bubbleSort(ary));
</script>
</body>
</html>
```
2、快速排序:取出数组的中间项,然后把数组剩下的每一项与该项进行比较,如果小于该项就放在该项的左边,大于该项就放在该项的右边;再分别把左边的项和右边的项的中间项取出,重复上面的步骤到项数小于等于1为止;最后把所获得的项进行拼接。
**html 代码**

```html:run
<!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){
if(ary.length<=1){
return ary;
}
var num=Math.floor(ary.length/2);
var numValue=ary.splice(num,1)[0];
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);
}
}
return quickSort(left).concat([numValue],quickSort(right));
}
document.write(quickSort(ary));
</script>
</body>
</html>
```
二、插入排序

1、插入排序:取出数组的第一项放到新数组里,让剩余的每一项与新数组的每一项进行比较,小的放左边,大的放右边。
**html 代码**

```html:run
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>插入排序</title>
</head>
<body>
<script>
var ary=[21,8,4,32,5];
function insertSort(ary){
var left=ary.splice(0,1);
for(var i=0; i<ary.length; i++){//正在进行第几次循环
var cur=ary[i];
for(var j=left.length-1; j>=0;){//本次循环需要执行几次
var nex=left[j];
if(cur<nex){
j--;
if(j===-1){
left.unshift(cur);
}
}else{
left.splice(j+1,0,cur);
break;
}
}
}
return left;
}
document.write(insertSort(ary));
</script>
</body>
</html>
```
附、js十大排序算法详解:https://www.cnblogs.com/liyongshuai/p/7197962.html

86JS原生:数组3种排序方法

标签:http   htm   https   mat   一个   document   break   大于   最大的   

原文地址:https://www.cnblogs.com/gushixianqiancheng/p/10967132.html

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