1.冒泡排序 平均时间复杂度O(N2) 最好情况O(N)最坏情况O(N2) 空间复杂度O(1) 升级版冒泡排序 2.选择排序 平均时间复杂度O(N2) 最好情况O(N2)最坏情况O(N2) 空间复杂度O(1) 适合小数据(1000以内)排序 3. 插入排序 平均时间复杂度O(N2) 最好情况O(N) ...
分类:
编程语言 时间:
2018-03-12 16:53:55
阅读次数:
178
// 1.插入排序 // 从第一个元素开始,该元素可以认为已经被排序; // 取出下一个元素,在已经排序的元素序列中从后向前扫描; // 如果该元素(已排序)大于新元素,将该元素移到下一位置; // 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置; // 将新元素插入到该位置后; // 重... ...
分类:
编程语言 时间:
2018-03-07 11:42:34
阅读次数:
153
javascript数组常用的方法: push():返回值,数组新的长度 pop():返回值,被删除的数组末尾元素 shift():返回值,被删除的数组首部元素 unshift():返回值,数组新的长度 concat():返回值,拼接后新的数组 slice():返回值,截取的新的数组 splice( ...
分类:
编程语言 时间:
2018-03-05 14:08:30
阅读次数:
254
遍历这个数组,先确定索引为0的数字为暂时最小数, 在剩下的数据中,以第一个为标杆,和剩下的数依次进行比较,如果标杆大于某数,则进行索引交换,继续比较,则a[i]=min; 最后让a[i]索引为0的数据进行交换,得到a[0]=min; 依次进行。。 ...
分类:
编程语言 时间:
2018-02-01 17:24:25
阅读次数:
124
JS排序之快速排序 一个数组中的数据,选择索引为(2/数组长度)的那个数据作为基数,数组中的其他数据与它对比,比它数值小的放在做数组,比它数值大的放在右数组,最后组合 左数组+基数+右数组,其中,左数组和右数组再调该方法,也就是递归调用,当数组长度小于2时,停止。 ...
分类:
编程语言 时间:
2018-01-25 18:24:33
阅读次数:
170
终于到了传说中的快速排序算法了,快速排序的思想和归并排序一样,都是采用分治思想,不同之处在于归并每次将数组一分为二,最后将小的数组进行比较,合并为大数组。快排是每次找一个主元,也就是基准数,按照这个基准数,把小于基准数的数放左边,大于基准数的数放右边,通过基准数来分组实现排序。所以快排的很重要一步就 ...
分类:
编程语言 时间:
2018-01-24 00:49:24
阅读次数:
185
var arry =[1,2,3,5,7,2,13,3]; for(var i=0;i<arry.length;i++){ for(var j =i+1;j<arry.length;j++){ if(arry[j]<arry[i]){ var c=arry[i]; arry[i]=arry[j]; ...
分类:
编程语言 时间:
2018-01-17 20:15:56
阅读次数:
139
归并排序是一种分治算法。思想是把原数组切分成较小的数组,直到每个小数组只有一个位置,再将小数组归并成较大的数组,直到最后有一个完整有序的大数组。 js实现如下: 归并排序是一种稳定排序,无论最好情况和最坏情况时间复杂度为O(nlogn),空间复杂度为O(n)。 附:T(n)=2T(n/2)+cn; ...
分类:
编程语言 时间:
2018-01-15 00:21:19
阅读次数:
175
出去sort不能用以外,我们可以选择用冒泡的方法来解决排序 思路: 1.创建新的数组, 2,用for循环遍历拿出要比较的第一个数和第二个数,依次比较然后交换位置 // let a=[6,4,2,5,5,]; // let b=0; // for(i=0;i<a.length;i++){ // for ...
分类:
编程语言 时间:
2018-01-15 00:17:12
阅读次数:
211
选排序的思路是首先从要排序的数组中选择最小的和目前的第一位交换位置,然后从剩下的数中选择最小的和第二个位置的数交换位置,再从剩下的数中选择最小的和第三个位置的数交换位置,以此类推,实现代码如下: 算法分析:无论最好或最坏情况,该算法的时间复杂度总是O(n2),因为每次要走第二个for循环找最小的数, ...
分类:
编程语言 时间:
2018-01-13 18:48:28
阅读次数:
123