排序算法(常见的排序算法的时间复杂度 O(n2))
1.冒泡排序(俩俩(相邻的俩个)相比 位置交换)O(n2)
```js
//冒泡排序
function bubleSort(arr){
//冒泡排序 外层的轮数
for(var i=0;i<arr.length-1;i++){
//控制比较的次数
for(var j=1;j<arr.length-i;j++){
//j和j-1 俩俩进行比较
if(arr[j]<arr[j-1]){
//换位置
var temp = arr[j]
arr[j] = arr[j-1]
arr[j-1] = temp
}
}
}
return arr
}
```
2.选择排序 (选择一个值 跟所有的值进行比较 然后这个值不是开始的 就换位置)O(n2)
```js
//选择排序
function selectorSort(arr){
for(var i=0;i<arr.length-1;i++){
//将当前的i值当做最大值
var max = i
for(var j = i+1;j<arr.length;j++){
//判断当前的最大值小于j下标所在的值
if(arr[max]<arr[j]){
max = j
}
}
//判断当前的最大值不是开始设置的值 要进行位置交换
if(max != i){
var temp = arr[i]
arr[i] = arr[max]
arr[max] = temp
}
}
return arr
}
```
3.快速排序(冒泡排序的进阶 二分法)O(nlogn)
```js
//快速排序
function quikSort(arr){
//当我们的数组里面只有一个元素或者一个元素都没有的时候 退出返回这个数组
if(arr.length <= 1){
return arr
}
//取基数值 取第一个
var mid = arr[0]
var left = []
var right = []
//for循环 拿出所有的值跟中间值比较
for(var i=1;i<arr.length;i++){
arr[i]>=mid?right.push(arr[i]):left.push(arr[i])
}
return quikSort(left).concat([mid],quikSort(right))
}
```
4.插入排序
5.希尔排序(插入排序的进阶)
6.堆排序
7.桶排序
8.基数排序
9.归并排序(大数据排序)
....