八大排序算法-简单排序(3种)
八大排序算法-简单排序
- 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种)相关推荐
- 三种线性排序算法 计数排序、桶排序与基数排序—— 转自:BYVoid
三种线性排序算法 计数排序.桶排序与基数排序 [非基于比较的排序] 在计算机科学中,排序是一门基础的算法技术,许多算法都要以此作为基础,不同的排序算法有着不同的时间开销和空间开销.排序算法有非常多种, ...
- JavaScript实现十种经典排序算法(js排序算法)
冒泡排序算法 冒泡排序(Bubble Sort)是一种简单直观的排序算法.冒泡排序算法的步骤描述如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一 ...
- C语言基础排序算法-选择排序
C语言基础排序算法-选择排序 什么是选择排序? 选择排序(Selection sort)是一种简单直观的排序算法,第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从 ...
- C语言排序算法 选择排序 插入排序 快速排序 qsort实现快排 堆排序
常见排序算法 选择排序 选择排序(Selection sort)是一种简单直观的排序算法. 它的工作原理如下. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素 ...
- std中稳定排序算法_排序算法问题:稳定排序与不稳定排序
(给算法爱好者加星标,修炼编程内功) 作者:紫红的泪 https://www.cnblogs.com/codingmylife/archive/2012/10/21/2732980.html 前言 排 ...
- Java排序算法——选择排序
Java排序算法--选择排序(Selection sort) 传送门 冒泡排序 插入排序 简述 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找 ...
- 十大经典排序算法-选择排序算法详解
十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...
- 排序算法---选择排序(java版)
简单选择排序 原理 选择排序(Selection Sort)的原理有点类似插入排序,也分已排序区间和未排序区间.但是选择排序每次会从排序区间中找到最小的元素,将其放到已排序区间的末尾. 简单选择排序执 ...
- 经典排序算法 - 希尔排序Shell sort
经典排序算法 - 希尔排序Shell sort 希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分, 第一部分,希尔排序介绍 第二部分,如何选取关键字,选取关键字是希尔排序的关键 第 ...
最新文章
- Linux远程远程控制程序TeamViewer
- python orm peewee
- android Android-PullToRefresh 下拉刷新
- 找出两个字符串数组中的相同元素
- mysql函数和索引冲突问题_Mysql索引常见问题汇总
- 数据科学学习心得_学习数据科学时如何保持动力
- Python模块(8)-sklearn 简易使用教程
- Java零拷贝四步曲——HeapByteBuffer与DirectByteBuffer
- JavaScript在发送请求AJAX请求时,URL的域名地址是使用绝对地址还是相对地址?
- JavaScript数据类型的隐式转换
- php日文文件名 liunx,linux文件名乱码
- 端口映射不能访问80端口
- EMC VMAX关于vault有关的概念
- 解决go合约fabric shim peer依赖问题
- 云服务,云服务商比较
- FPGA 频率计实验
- 搭建OpenStack的Message queue及出现的问题
- OC5228 100V多功能LED恒流驱动器-高辉调光 65536:1 调光比
- openfire整合
- NAS 详细搭建方案 -添加磁盘