Skip to content

Commit de9e6f5

Browse files
committed
排序算法:冒泡、选择
1 parent 6246be7 commit de9e6f5

File tree

5 files changed

+54
-3
lines changed

5 files changed

+54
-3
lines changed

README.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## 数据结构部分
44

5-
#### [数组与链表,队列与栈](/数组与链表,队列与栈.md)
5+
#### [数组与链表,队列与栈](/数组与链表,堆栈与队列.md)
66

77
介绍了基本数据结构线性表的特点和原理以及js的算法实现。
88
由于js语言本身的特点,线性表在js中主要以数组的应用为主,而js数组本身也并不是传统意义上的连续线性表。
@@ -14,8 +14,9 @@ js对象大家都用的很多,但其底层的哈希表特性你是否清楚?
1414
## 算法部分
1515

1616
- [数组相关](#array)
17+
- [排序相关](#order)
1718

18-
### Array [array.js](./array.js)
19+
### Array [array.js](/js/array.js)
1920

2021
#### indexOfArray:数组子串位置查询
2122

@@ -29,7 +30,10 @@ js对象大家都用的很多,但其底层的哈希表特性你是否清楚?
2930

3031
#### longestSubArrayHash: 利用哈希表去重的数组最长无重复子串查找
3132

32-
- [排序相关](#sort)
33+
### order [order.js](/js/order.js)
34+
35+
#### bubble:冒泡排序
36+
#### select:选择排序
3337

3438

3539

File renamed without changes.
File renamed without changes.

js/order.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/**
2+
* @authors : qieguo
3+
* @date : 2016/12/8 0008
4+
* @version : 1.0
5+
* @description : 常见排序算法
6+
*/
7+
8+
'use strict';
9+
10+
/**
11+
* 冒泡排序
12+
* @param : <Array> target数组
13+
* @description : 冒泡排序,更贴切的形容应该是沉底排序,每一轮内循环就是最大数沉底了。
14+
*/
15+
function bubble(target) {
16+
var temp;
17+
for (var j = target.length; j > 0; j--) {
18+
for (var i = 0; i < j - 1; i++) {
19+
if (target[i] > target[i + 1]) {
20+
temp = target[i];
21+
target[i] = target[i + 1];
22+
target[i + 1] = temp;
23+
}
24+
}
25+
}
26+
return target;
27+
}
28+
console.log('bubble test', bubble([5, 3, 14, 65, 35, 90, 23]));
29+
30+
/**
31+
* 选择排序
32+
* @param : <Array> target数组
33+
* @description : 选择排序,一次内循环只交换一次次序。
34+
*/
35+
function select(target) {
36+
for (var j = target.length; j > 0; j--) {
37+
var maxIndex = 0;
38+
for (var i = 1; i < j; i++) {
39+
maxIndex = target[maxIndex] > target[i] ? maxIndex : i;
40+
}
41+
var temp = target[j - 1];
42+
target[j - 1] = target[maxIndex];
43+
target[maxIndex] = temp;
44+
}
45+
return target;
46+
}
47+
console.log('select test', select([5, 3, 14, 65, 35, 90, 23]));
File renamed without changes.

0 commit comments

Comments
 (0)