排序算法的实现之Javascript

话不多说,直接代码。

1.冒泡排序

1、依次比较相邻的两个数,如果前一个比后一个大,则交换两者的位置,否则位置不变

2、按照第一步的方法重复操作前length-1的数字,直到最后一个数

图形示例

代码如下:

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

2.选择排序

1、依次找出最小的数,和前面的数交换位置

图形示例

代码如下:

  1. function select(nums){
  2. var item =0;
  3. for(var i = 0;i<nums.length-1;i++){
  4. var min = i; //把最小索引给min
  5. for(var j = i+1;j<nums.length;j++){
  6. if(nums[min] > nums[j]) { //对比,如果最小索引的vlaue大于其他value,则将该索引给min
  7. min = j
  8. }
  9. }
  10. item = nums[min]; //最小索引给他
  11. nums[min] = nums[i];
  12. nums[i] = item;
  13. }
  14. return nums;
  15. }

3、快速排序

1、找到中间的那个数作为基准,遍历数组,把小于基准的数放在left数组中,大于基准的数放在right数组中

2、再按同样的方法,对这两个数组进行排序

3、递归

图形示例:

代码如下:

  1. var quickSort = function(nums) {
  2. if (nums.length <= 1) return nums;
  3. var pivotIndex = Math.floor(nums.length / 2);
  4. var pivot = nums.splice(pivotIndex, 1)[0]; //splice返回的是一个数组,所以用[0]取出来
  5. var left = [];
  6. var right = [];
  7. for (var i = 0; i < nums.length; i++) {
  8. if (nums[i] < pivot) {
  9. left.push(nums[i]);
  10. } else {
  11. right.push(nums[i]);
  12. }
  13. }
  14. return quickSort(left).concat(pivot, quickSort(right)); //使用递归完成快排
  15. }

4、插入排序

1、把一个数组分为【已排序】和【未排序】两部分,设定第一个数【已排序】,其余为【未排序】

2、从【未排序】中抽出第一个数,依次向前和【已排序】部分比较,如果比抽出的数大,则继续向前比较,否则插入后一个点

图形示例:

代码如下:

  1. function insertionSort(nums) {
  2. var i,j,value;
  3. var len = nums.length;
  4. for(i = 0;i<len;i++){
  5. value = nums[i];
  6. for(j = i-1;j>=0&&nums[j]>value;j--){
  7. nums[j+1] = nums[j]; //向后移一位
  8. }
  9. nums[j+1] = value;
  10. }
  11. return nums
  12. }

排序算法的实现之Javascript(常用)的更多相关文章

  1. Python学习(三) 八大排序算法的实现(下)

    本文Python实现了插入排序.基数排序.希尔排序.冒泡排序.高速排序.直接选择排序.堆排序.归并排序的后面四种. 上篇:Python学习(三) 八大排序算法的实现(上) 1.高速排序 描写叙述 通过 ...

  2. Javascript十大排序算法的实现方法

    上一篇中,实现了Javascript中的冒泡排序方法,下面把剩余的九种排序算法实现 选择排序: var array = []; for(var i=0;i<100000;i++){ var x ...

  3. 排序算法的实现(归并,快排,堆排,希尔排序 O(N*log(N)))

    今天跟着左老师的视频,理解了四种复杂度为 O(N*log(N))的排序算法,以前也理解过过程,今天根据实际的代码,感觉基本的算法还是很简单的,只是自己写的时候可能一些边界条件,循环控制条件把握不好. ...

  4. python排序算法的实现-插入

    1.算法: 设有一组关键字{ K 1 , K 2 ,…, K n }:排序开始就认为 K 1 是一个有序序列:让 K 2 插入上述表长为 1 的有序序列,使之成为一个表长为 2 的有序序列:然后让 K ...

  5. 排序算法的实现(C/C++实现)

    存档: #include <iostream> #include <stdlib.h> #include <sort.h> #define maxsize 20 u ...

  6. 各类排序算法的实现C#版

    using System;using System.CodeDom;using System.Collections.Generic;using System.Linq;using System.Ru ...

  7. 一起学Hadoop——二次排序算法的实现

    二次排序,从字面上可以理解为在对key排序的基础上对key所对应的值value排序,也叫辅助排序.一般情况下,MapReduce框架只对key排序,而不对key所对应的值排序,因此value的排序经常 ...

  8. 基于python的几种排序算法的实现

    #!usr/bin/python3 # -*- coding: utf-8 -*- # @Time : 2019/3/28 10:26 # @Author : Yosef-夜雨声烦 # @Email ...

  9. Python之基本排序算法的实现

    import cProfile import random class SortAlgorithm: def __init__(self,unsortedlist=[]): self.unsorted ...

随机推荐

  1. Mina学习+手写服务端+通过telnet连接服务端

    1. 2. 3. 4.MinaServer.java package com.mina; import java.io.IOException;import java.net.InetSocketAd ...

  2. [Luogu] 封锁阳光大学

    https://www.luogu.org/problemnew/show/P1330 #include <cstdio> #include <cstring> #includ ...

  3. 【IOI2019】2048矩形模拟

    /* dos windows 25*80 */ #include <algorithm> #include <windows.h> #include <iostream& ...

  4. TensorFlow(八):tensorboard可视化

    import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data from tensorflow.c ...

  5. CF516D Drazil and Morning Exercise【并查集,结论】

    题目描述:一棵\(n\)个点的树,设\(d(u)=\max_{v\in V}\text{dis}(u,v)\),每次询问一个数\(l\),求一个最大的联通子图\(L\),使得\(\forall u,v ...

  6. vue学习--vue项目端口不固定,无法指定问题

    写于20190819 前面是自己解决的思路,后面是解决方法以及需要记住的一些更改 package.json 之前只知道vue项目是基于node.js,对node.js了解不是很深入,项目的开始文件是p ...

  7. Beyond compare4密钥

    w4G-in5u3SH75RoB3VZIX8htiZgw4ELilwvPcHAIQWfwfXv5n0IHDp5hv1BM3+H1XygMtiE0-JBgacjE9tz33sIh542EmsGs1yg6 ...

  8. [Shell]CVE-2019-0708漏洞复现及修复补丁

    0x01 漏洞原理 Windows系列服务器于2019年5月15号,被爆出高危漏洞,该漏洞影响范围较广,windows2003.windows2008.windows2008 R2.windows 7 ...

  9. 【python代码】linux 登陆网关

    #!/usr/bin/env python import urllib2 url="http://10.3.8.211" data="DDDDD=2010111222&a ...

  10. 深入理解JVM虚拟机9:JVM监控工具与诊断实践

    转自https://juejin.im/post/59e6c1f26fb9a0451c397a8c jvm优化必知系列——监控工具 微信公众号[Java技术江湖]一位阿里 Java 工程师的技术小站. ...