八大排序算法-简单排序

  • javascript-选择排序
  • jacascript-冒泡排序
  • jacascript-插入排序

javascript-选择排序

算法思想:简单选择排序是最简单直观的一种算法,基本思想为每一趟从待排序的数据元素中选择最小(或最大)的一个元素,并将其作为首元素(如果位置不对则交换),直到所有元素排完为止,简单选择排序是不稳定排序。

1、第一趟通过设置岗哨:min=0。
2、遍历下标为min+1----len-1位置与min位置的数比较。(如果小于岗哨则交换位置)
3、当轮循环结束之后,那这个变量存储的就是当前最小元素的下标。
4、第二趟岗哨加1,重复2、3、直到第len-1趟

function swap(array, i, j){//两个数调换var temp =array[j];array[j]=array[i];array[i]=temp;
};
function selectSort(arr){var min;var len=arr.length;for(var i=0;i<len;i++){min=i;for(var j=i+1;j<len;j++){if(arr[min]>arr[j]){swap(arr,min,j);}}}return arr;
}var arr1 = [3, 5, 2, 4, 8, 6];
console.log(selectSort(arr1));//[ 2, 3, 4, 5, 6, 8 ]

jacascript-冒泡排序

算法思想:

冒泡排序(Bubble Sort)也是一种简单直观的排序算法。进行n趟扫描要排序的数列,每一趟比较确定最后一个位置的数,一次比较两个元素,如果他们的顺序错误就把他们交换过来。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

算法步骤:

1、第一趟从下标为0开始比较与其相邻的元素。如果第一个比第二个大,就交换他们两个。

2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数,此时一趟结束确定最大的元素在最后的位置。

3)针对所有的元素重复1、2、的步骤,除了最后一个

4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

  function swap(array, i, j){//两个数调换var temp =array[j];array[j]=array[i];array[i]=temp;
};
function bubbleSort(arr) {var p = arr.length - 1;var  flag;for (var i = p; i > 0; i--) {flag = 0;//每趟的排序后将标识置0for (var j = 0; j < p; j++) {if (arr[j] > arr[j + 1]) {swap(arr,j,j+1);flag = 1;}}if (flag = 0) break; //全程无交换时退出}return arr;}var arr1 = [3, 5, 2, 4, 8, 6];console.log(bubbleSort(arr1));``

jacascript-插入排序

主要算法思想:

插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于每一个未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

算法步骤:

1)将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。

2)从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列(从后到前扫描,如果当前元素小于(保证当前位置最大)扫描元素,则交换位置)的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

//从小到大
function insertSort(arr){var len=arr.length;var tmp;for(var i=1;i<len;i++){tmp=arr[i];for(var j=i;j>0&&tmp<arr[j-1];j--){  arr[j]=arr[j-1];arr[j-1]=tmp;}}return arr;
}
var arr1 = [3, 5, 2, 4, 8, 6];
console.log(insertSort(arr1));//[ 2, 3, 4, 5, 6, 8 ]
//方式2
function swap(array, i, j){//两个数调换var temp =array[j];array[j]=array[i];array[i]=temp;
};
//从小到大function insertSort(arr){var len=arr.length;for(var i=1;i<len;i++){for(var j=i;j>0&&arr[j]<arr[j-1];j--){  swap(arr,j,j-1);}}return arr;}var arr1 = [3, 5, 2, 4, 8, 6];console.log(insertSort(arr1));//[ 2, 3, 4, 5, 6, 8 ]

八大排序算法-简单排序(3种)相关推荐

  1. 三种线性排序算法 计数排序、桶排序与基数排序—— 转自:BYVoid

    三种线性排序算法 计数排序.桶排序与基数排序 [非基于比较的排序] 在计算机科学中,排序是一门基础的算法技术,许多算法都要以此作为基础,不同的排序算法有着不同的时间开销和空间开销.排序算法有非常多种, ...

  2. JavaScript实现十种经典排序算法(js排序算法)

    冒泡排序算法 冒泡排序(Bubble Sort)是一种简单直观的排序算法.冒泡排序算法的步骤描述如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一 ...

  3. C语言基础排序算法-选择排序

    C语言基础排序算法-选择排序 什么是选择排序? 选择排序(Selection sort)是一种简单直观的排序算法,第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从 ...

  4. C语言排序算法 选择排序 插入排序 快速排序 qsort实现快排 堆排序

    常见排序算法 选择排序 选择排序(Selection sort)是一种简单直观的排序算法. 它的工作原理如下. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素 ...

  5. std中稳定排序算法_排序算法问题:稳定排序与不稳定排序

    (给算法爱好者加星标,修炼编程内功) 作者:紫红的泪 https://www.cnblogs.com/codingmylife/archive/2012/10/21/2732980.html 前言 排 ...

  6. Java排序算法——选择排序

    Java排序算法--选择排序(Selection sort) 传送门 冒泡排序 插入排序 简述 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找 ...

  7. 十大经典排序算法-选择排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  8. 排序算法---选择排序(java版)

    简单选择排序 原理 选择排序(Selection Sort)的原理有点类似插入排序,也分已排序区间和未排序区间.但是选择排序每次会从排序区间中找到最小的元素,将其放到已排序区间的末尾. 简单选择排序执 ...

  9. 经典排序算法 - 希尔排序Shell sort

    经典排序算法 - 希尔排序Shell sort 希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分, 第一部分,希尔排序介绍 第二部分,如何选取关键字,选取关键字是希尔排序的关键 第 ...

最新文章

  1. Linux远程远程控制程序TeamViewer
  2. python orm peewee
  3. android Android-PullToRefresh 下拉刷新
  4. 找出两个字符串数组中的相同元素
  5. mysql函数和索引冲突问题_Mysql索引常见问题汇总
  6. 数据科学学习心得_学习数据科学时如何保持动力
  7. Python模块(8)-sklearn 简易使用教程
  8. Java零拷贝四步曲——HeapByteBuffer与DirectByteBuffer
  9. JavaScript在发送请求AJAX请求时,URL的域名地址是使用绝对地址还是相对地址?
  10. JavaScript数据类型的隐式转换
  11. php日文文件名 liunx,linux文件名乱码
  12. 端口映射不能访问80端口
  13. EMC VMAX关于vault有关的概念
  14. 解决go合约fabric shim peer依赖问题
  15. 云服务,云服务商比较
  16. FPGA 频率计实验
  17. 搭建OpenStack的Message queue及出现的问题
  18. OC5228 100V多功能LED恒流驱动器-高辉调光 65536:1 调光比
  19. openfire整合
  20. NAS 详细搭建方案 -添加磁盘

热门文章

  1. 家族族谱推理规则文件
  2. delphi用indy实现php后台的文件上传下载
  3. 计算机考研考音乐学院,135101音乐专业考研
  4. 暴笑口误2007酷热版,不看后悔!
  5. linux可爱的小命令
  6. bzoj3944: Sum//杜教筛
  7. iOS 多线程和GCD(Grand Central Dispath) 教程 (一)
  8. 如何查看jdk安装路径
  9. Chainge橙子钱包近期路线图更新
  10. 小爬爬4.协程基本用法多任务异步协程爬虫示例(大数据量)