记一下JavaScript的几种排序算法

零、写在最前

  排序的方法有很多种,这篇文章只是记录我熟悉的算法;

  我发现了一个关于排序算法很有趣的网站,把相关的算法演示做成了动画,有兴趣的同学可以看看!

  附上SortAnimate网站链接:http://jun-lu.github.io/SortAnimate/index.html

一、冒泡排序

  这是一种最基础的排序算法,也就是入门级别的算法!

  原理:两两检测,比较两者之间的大小关系,大的往后丢!

 1 function bubbleSort(arr){
 2     for(var i=0;i<arr.length;i++){
 3         for(var j=0;i<arr.length-i-1;i++){
 4             if(arr[j]>arr[j+1]){
 5                 var temp=arr[j+1];
 6                 arr[j+1]=arr[j];
 7                 arr[j]=temp;
 8             }
 9         }
10     }
11     return arr;
12 }

二、快速排序

  常用、排序速度快,但有点浪费内存空间!

  原理:以中间基准点为中心进行比较,小的放左,大的放右,需要另外的2个数组存放;

 1 function quickSort(arr){
 2     if (arr.length <= 1) { return arr; }
 3     var index=Math.floor(arr.length/2);
 4     var center=arr.splice(index,1)[0];
 5     var left=[],right=[];
 6     for(var i=0;i<arr.length;i++){
 7         arr[i]<center ? left.push(arr[i]) : right.push(arr[i]);
 8     }
 9     return quickSort(left).concat([center],quickSort(right));
10 }

三、插入排序

  原理:逐个检测,最大的往最后丢,每次减少检测次数!

 1 function insertSort(arr){
 2     var arrLen=arr.length;
 3     for(var i=0;i<arrLen;i++){
 4         var index=0;
 5         for(var j=1;j<arrLen-i;j++){
 6             if(arr[j]>arr[index]) index=j;
 7         }
 8         var temp=arr[arrLen-i-1];
 9         arr[arrLen-i-1]=arr[index];
10         arr[index]=temp;
11     }
12     return arr;
13 }

四、结尾

  排序算法还有选择排序、希尔排序、二分排序等等.......

  我以后再学习,再来补充这篇文章!

-------------------- End ---------------------

时间: 2024-10-18 23:55:01

记一下JavaScript的几种排序算法的相关文章

12种排序算法:原理、图解、动画视频演示、代码以及笔试面试题目中的应用

出处:http://blog.csdn.net/han_xiaoyang/article/details/12163251. 声明:版权所有,转载请注明出处,谢谢. 0.前言 从这一部分开始直接切入我们计算机互联网笔试面试中的重头戏算法了,初始的想法是找一条主线,比如数据结构或者解题思路方法,将博主见过做过整理过的算法题逐个分析一遍(博主当年自己学算法就是用这种比较笨的刷题学的,囧),不过又想了想,算法这东西,博主自己学的过程中一直深感,基础还是非常重要的,很多难题是基础类数据结构和题目的思想综

13种排序算法详解

0.前言 从这一部分开始直接切入我们计算机互联网笔试面试中的重头戏算法了,初始的想法是找一条主线,比如数据结构或者解题思路方法,将博主见过做过整理过的算法题逐个分析一遍(博主当年自己学算法就是用这种比较笨的刷题学的,囧),不过又想了想,算法这东西,博主自己学的过程中一直深感,基础还是非常重要的,很多难题是基础类数据结构和题目的思想综合发散而来.比如说作为最基本的排序算法就种类很多,而事实上笔试面试过程中发现掌握的程度很一般,有很多题目,包括很多算法难题,其母题或者基本思想就是基于这些经典算法的,

几种排序算法的学习,利用Python和C实现

之前学过的都忘了,也没好好做过总结,现在总结一下. 时间复杂度和空间复杂度的概念: 1.空间复杂度:是程序运行所以需要的额外消耗存储空间,一般的递归算法就要有o(n)的空间复杂度了,简单说就是递归集算时通常是反复调用同一个方法,递归n次,就需要n个空间. 2.时间复杂度:一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多.一个算法中的语句执行次数称为语句频度或时间频度.记为T(n).一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)

学习Java绝对要懂的,Java编程中最常用的几种排序算法!

今天给大家分享一下Java中几种常见的排序算法的Java代码 推荐一下我的Java学习羊君前616,中959,最后444.把数字串联起来!     ,群里有免费的学习视频和项目给大家练手.大神有空时也会带带大家的,学Java的过程中一定要多问多记,不要怕问题,要去主动的解决问题. 冒泡排序 选择排序 插入排序 归并排序 例如:降序排{10,5,9,6}分为{10,5},{9,6}然后{5,10},{6,9}然后完成 快速排序 就最后一个快速排序可能大家看不太懂,我就举个例子吧 开始输入以下数组

JavaScript的9大排序算法详解

一.插入排序 1.算法简介 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间. 2.算法描述和实现 一般来说,插入排序都采用in-place在数组上实现.具体算法描述如下: 从第一个元素开始,该元素可以认为已

八种排序算法

最近一段时间自己在研究各种排序算法,于是自己写了一个八种排序算法的集合: /************************************************************************* > Copyright (c)2014 stay hungry,stay foolish !!! > File Name: sort.cpp > Author: kanty > Mail: [email protected] > Created Time:

几种排序算法比较

图解数据结构(10)——排序 十四.排序(Sort) http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html <Thinking in Algorithm>12.详解十一种排序算法 http://blog.csdn.net/speedme/article/details/23021467

数据结构中的7种排序算法

数据结构中的7种排序算法 排序是将一个记录的任意序列重新排列成一个按键值有序的序列. 时间复杂度主要考虑元素的移动次数. 结构如下: 1.直接插入排序 1,定义:依次将待排序序列中的每一个记录插入到一个已经排好序的序列中,直到全部记录都排好序. 2,时间复杂度:在最好情况下,待排序序列为正序,时间复杂度为O(n):最坏情况下,待排序序列为逆序,时间复杂度为O(n^2);平均情况下,时间复杂度为O(n^2). 3,空间复杂度:O(1). public static void insertSort(

总结N种排序算法及实现

排序算法是一个简单的问题,但在此问题上却有大量的研究!当前的排序算法通常按照如下四个方面进行分类(或是评价): 1.时间复杂度:一个排序算法的理想性能是O(n).一般而言,好的性能O(nlogn),坏的性能O(n2). 2.空间复杂度(内存使用量) 3.稳定性:稳定的排序算法会让原本有相等键值的记录维持原本的相对次序. 4.排序方式:插入.交换.选择.合并等 一.冒泡排序:这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端. 步骤:1.比较相邻的两个元素,如果第一个比第二个大,就