排序算法(常见的排序算法的时间复杂度 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.归并排序(大数据排序) ....标签:arr,复杂度,冒泡排序,算法,n2,排序 From: https://www.cnblogs.com/hofenglang/p/16833805.html