当前位置: 首页 > Web前端 > HTML

JS排序算法

时间:2023-04-02 21:52:55 HTML

1。冒泡排序冒泡算法就是比较相邻的两个项目。如果前者大于后者,则交换它们。假设一共有n个item,那么一共需要n-1次行程,第一个行程需要交换n-1次,但是在第一个行程结束后,最后一个item基本确定为最大的物品,所以第二次需要交换n-2次,第i次交换n-i次。这种排序的时间复杂度在最好的情况下是O(n),在一般情况下是O(n2),在最坏的情况下是O(n2)。下面是代码演示:冒泡排序2、选择排序选择排序就是先找到最小的项,然后和第一项交换位置,再找到次小的项和第二项交换位置,依次类推,共需要n-1次。选择排序的空间复杂度在所有情况下都是O(n2)。代码演示:选择排序3、插入排序插入排序就是把前面的项看成一个数组,然后按照大小把后面的项插入相应的位置。比如第二个和第一个比较,他应该插在第一个之前还是之后?第三项应该插入到第一项和第二项的什么位置?这个一般也需要插入n-1次。插入排序的时间复杂度最好情况下是O(n),其他情况下是O(n2)。代码演示:插入排序4、归并排序nativejs中的sort方法在firefox中是归并排序实现的,而在chrome中是quicksort的变体实现的。归并排序是一种分而治之的算法。它将一个大阵分割成无数个小阵。如果小数组中只有一项,则直接返回。如果不止一项,则继续划分,然后将小数组合并为一个大数组。数组,在归并的时候,会比较左右的大小,然后进行排序代码演示:归并排序5、快速排序快速排序也是采用分而治之的算法,同样是把大数组分成小数组。它会选择一个中间元素并创建两个Left和right指针,然后分别从左边和右边开始,如果左边指针遇到比中间元素大的数就停止,如果右边指针遇到比中间元素小的数比中间的元素,它也会停止,然后两者交换Location。然后两个指针继续向前移动,直到左指针超过右指针,这样左边的数就会小于中间的元素,右边的数就会大于中间的元素,然后分成左右数组,然后执行上述操作,直到数组完全排序。代码演示:快速排序