用JS实现的常见几种排序算法

1.快速排序法

  1. /*快速排序法*/
  2. function quickSort(a) {
  3. if (a.length <= 1) {
  4. return a;
  5. }
  6. var midLength = Math.floor(a.length / 2);
  7. var midValue = a.splice(midLength,1);
  8. var left = [];
  9. var right = [];
  10. for (var i = 0; i < a.length; i++) {
  11. if (a[i] < midValue) {
  12. left.push(a[i]);
  13. } else {
  14. right.push(a[i]);
  15. }
  16. }
  17. return quickSort(left).concat(midValue,quickSort(right));
  18. }
  19. console.log(quickSort([1,5,3,6,2,4,0]));

2.冒泡排序

  1. /*冒泡排序法*/
  2. function bubbleSort(a) {
  3. var length = a.length;
  4. var sortArray;
  5. for (var i = 0; i < length-1; i++) {
  6. for (var j = 0; j < length-i-1 ; j++) {
  7. if (a[j] > a[j+1]) {
  8. sortArray = a[j];
  9. a[j] = a[j+1];
  10. a[j+1] = sortArray;
  11. }
  12. }
  13. }
  14. return a;
  15. }
  16. console.log(bubbleSort([2,1,3,6,5,4,7,0]));

3.插入排序

  1. /*插入排序法*/
  2. function insertSort(a) {
  3. var length = a.length;
  4. var sortArray;
  5. for (var i = 1; i < length; i++) {
  6. for (var j = 0; j < i ; j++) {
  7. if (a[i] < a[j]) {
  8. sortArray = a[i];
  9. a[i] = a[j];
  10. a[j] = sortArray;
  11. }
  12. }
  13. }
  14. return a;
  15. }
  16. console.log(insertSort([0,6,5,3,4,2,1,7]));

4.选择排序

  1. /*选择排序法*/
  2. function selectSort(a) {
  3. for (var i = 0; i < a.length; i++) {
  4. var min = a[i];
  5. var k = i;
  6. for (var j = i + 1; j < a.length; j++) {
  7. if (min > a[j]) {
  8. min = a[j];
  9. k = j;
  10. }
  11. }
  12. a[k] = a[i];
  13. a[i] = min;
  14. }
  15. return a;
  16. }
  17. console.log(selectSort([5,1,4,0,3,2,7,6]));

附加:js判断滚动条是否到底部

<style>
*{
padding:0;
margin:0;
}
.test{
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
width: 600px;
height: 300px;
padding: 20px;
margin: auto;
overflow-y: auto;
border:2px solid #DDD;
}
</style>
<div class="test" id="test">
<p style="height:400%"></p>
</div>
<script>
var test = document.getElementById("test");
test.addEventListener("scroll", function(){
var str = "可滚动距离:"+ test.scrollHeight +" 滚动位置:"+ test.scrollTop + " 滚动容器高度:"+ test.clientHeight;
var p = document.createElement("p");
p.innerHTML = str;
document.body.appendChild(p);
}, false);
</script>

时间: 2024-10-23 14:13:09

用JS实现的常见几种排序算法的相关文章

Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等

本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排序.快速排序(重点).堆排序.归并排序等等.看下图: 给定数组:int data[] = {9,2,7,19,100,97,63,208,55,78} 一.直接插入排序(内部排序.O(n2).稳定) 原理:从待排序的数中选出一个来,插入到前面的合适位置. [java] view plain copy

常见的几种排序算法-插入、选择、冒泡、快排、堆排等

排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排序.快速排序(重点).堆排序.归并排序等等.看下图: 给定数组:int data[] = {9,2,7,19,100,97,63,208,55,78} 一.直接插入排序(内部排序.O(n2).稳定) 原理:从待排序的数中选出一个来,插入到前面的合适位置. package com.xtfggef.algo.sort; public

总结N种排序算法及实现

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

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

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

几种排序算法的C++实现——快速排序、堆排序、基数排序

排序算法是非常常见的面试笔试问题,考查的一个人的基本功,本文将一些排序做了C++的实现,就当是做个学习总结吧. 1.快速排序 快速排序的中心是填坑法,取一个数(这里选取第一个数)作为基准数temp,从队尾开始寻找第一个比基准数小的数a[j],交换a[j]和temp,然后队首开始查找第一个比temp大的数a[i],交换之,遍历的结果是当i>=j时,temp左边的数都小于temp,后边的数都大于temp,这个有点像归并排序.最后利用递归调用完成排序,代码如下: 1 void QuickSort(in

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}然后完成 快速排序 就最后一个快速排序可能大家看不太懂,我就举个例子吧 开始输入以下数组

经典的7种排序算法 原理C++实现

经典的7种排序算法 原理C++实现 排序是编程过程中经常遇到的操作,它在很大程度上影响了程序的执行效率. 7种常见的排序算法大致可以分为两类:第一类是低级排序算法,有选择排序.冒泡排序.插入排序:第二类是高级排序算法,有堆排序.排序树.归并排序.快速排序. 一.低级排序算法 1. 选择排序 排序过程:给定一个数值集合,循环遍历集合,每次遍历从集合中选择出最小或最大的放入集合的开头或结尾的位置,下次循环从剩余的元素集合中遍历找出最小的并如上操作,最后直至所有原集合元素都遍历完毕,排序结束. 实现代