Skip to content

Commit 00e2fce

Browse files
committed
快速排序
1 parent 6b57f5b commit 00e2fce

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

README.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@
6464
* [08-01](https://github.com/TYRMars/JSlearn#08-01) `JavaScript算法测试函数`
6565
* [08-02](https://github.com/TYRMars/JSlearn#08-02) `JavaScript算法-冒泡排序`
6666
* [08-03](https://github.com/TYRMars/JSlearn#08-03) `JavaScript算法-选择排序`
67+
* [08-04](https://github.com/TYRMars/JSlearn#08-04) `JavaScript算法-插入排序`
68+
* [08-05](https://github.com/TYRMars/JSlearn#08-05) `JavaScript算法-希尔排序`
69+
* [08-06](https://github.com/TYRMars/JSlearn#08-06) `JavaScript算法-归并排序`
70+
* [08-07](https://github.com/TYRMars/JSlearn#08-07) `JavaScript算法-快速排序`
6771

6872
#### 09 JavaScrpit-函数应用
6973
* [09-01](https://github.com/TYRMars/JSlearn#09-01) `函数应用`
@@ -1957,6 +1961,38 @@ console.log(mergeSort(arr));
19571961
//[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
19581962
```
19591963

1964+
## 08-07
1965+
### JavaScript算法-快速排序
1966+
1967+
* 快速排序是处理大数据集最快的排序算法之一。它是一种分而治之的算法,通过递归的方式将数据依次分解为包含较小元素和较大元素的不同子序列。该算法不断重复这个步骤直到所有数据都是有序的。
1968+
* 这个算法首先要在列表中选择一个元素作为基准值(pivot)。数据排序围绕基准值进行,将列表中小于基准值的元素移到数组的底部,将大于基准值的元素移到数组的顶部。
1969+
1970+
#### 快速排序的算法和伪代码
1971+
* 算法:
1972+
*1)选择一个基准元素,将列表分隔成两个子序列;
1973+
*2)对列表重新排序,将所有小于基准值的元素放在基准值的前面,所有大于基准值的元素放在基准值的后面
1974+
*3)分别对较小元素的子序列和较大元素的子序列重复步骤12
1975+
* 代码如下
1976+
1977+
```JavaScript
1978+
function qSort(list) {
1979+
if (list.length == 0) {
1980+
return [];
1981+
}
1982+
var lesser = [];
1983+
var greater = [];
1984+
var pivot = list[0];
1985+
for (var i = 1; i < list.length; i++) {
1986+
if (list[i]<pivot) {
1987+
lesser.push(list[i]);
1988+
}else {
1989+
greater.push(list[i]);
1990+
}
1991+
}
1992+
return qSort(lesser).concat(pivot,qSort(greater));
1993+
}
1994+
```
1995+
19601996
## 09-01
19611997
### JS基本应用-函数
19621998

0 commit comments

Comments
 (0)