知识大全 javascript的几种排序方法

Posted

篇首语:知识是使人类快乐的主要因素之一。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 javascript的几种排序方法相关的知识,希望对你有一定的参考价值。

  所谓排序 就是要整理文件中的记录 使之按关键字递增(或递减)次序排列起来 其确切定义如下   输入 n个记录R R … Rn 其相应的关键字分别为K K … Kn   输出 Ril Ri … Rin 使得Ki ≤Ki ≤…≤Kin (或Ki ≥Ki ≥…≥Kin)

  这里 我们简单介绍几种排序方法 直接插入排序 希儿排序 冒泡排序 快速排序 直接选择排序 文中所提及的代码在IE 下测试通过

  直接插入排序基本思想

  假设待排序的记录存放在数组R[ n]中 初始时 R[ ]自成 个有序区 无序区为R[ n] 从i= 起直至i=n为止 依次将R[i]插入当前的有序区R[ i ]中 生成含n个记录的有序区

  算法描述

 function InsertSort(arr) //插入排序 >直接插入法排序  var st = new Date();  var temp j;  for(var i= ; i<arr length; i++)    if((arr[i]) < (arr[i ]))     temp = arr[i];    j = i ;    do      arr[j+ ] = arr[j];     j ;        while (j> && (temp) < (arr[j]));    arr[j+ ] = temp;   //endif    status = (new Date() st) + ms ;  return arr; 

  希尔排序基本思想

  先取一个小于n的整数d 作为第一个增量 把文件的全部记录分成d 个组 所有距离为dl的倍数的记录放在同一个组中 先在各组内进行直接插人排序 然后 取第二个增量d <d 重复上述的分组和排序 直至所取的增量dt= (dt<dt l<…<d <d ) 即所有记录放在同一组中进行直接插入排序为止    该方法实质上是一种分组插入方法

  算法描述

  function ShellSort(arr) //插入排序 >希儿排序  var st = new Date();  var increment = arr length;  do    increment = (increment/ | ) + ;   arr = ShellPass(arr increment);    while (increment > )  status = (new Date() st) + ms ;  return arr;  function ShellPass(arr d) //希儿排序分段执行函数  var temp j;  for(var i=d; i<arr length; i++)    if((arr[i]) < (arr[i d]))     temp = arr[i]; j = i d;    do      arr[j+d] = arr[j];     j = j d;        while (j> && (temp) < (arr[j]));    arr[j+d] = temp;   //endif    return arr; 

  冒泡排序基本思想

  将被排序的记录数组R[ n]垂直排列 每个记录R[i]看作是重量为R[i] key的气泡 根据轻气泡不能在重气泡之下的原则 从下往上扫描数组R 凡扫描到违反本原则的轻气泡 就使其向上 飘浮 如此反复进行 直到最后任何两个气泡都是轻者在上 重者在下为止

  算法描述

 function BubbleSort(arr) //交换排序 >冒泡排序  var st = new Date();  var temp;  var exchange;  for(var i= ; i<arr length; i++)    exchange = false;   for(var j=arr length ; j>=i; j )     if((arr[j+ ]) < (arr[j]))      temp = arr[j+ ];     arr[j+ ] = arr[j];     arr[j] = temp;     exchange = true;          if(!exchange) break;    status = (new Date() st) + ms ;  return arr; 

  快速排序基本思想

  将原问题分解为若干个规模更小但结构与原问题相似的子问题 递归地解这些子问题 然后将这些子问题的解组合为原问题的解     在R[low high]中任选一个记录作为基准(Pivot) 以此基准将当前无序区划分为左 右两个较小的子区间R[low pivotpos )和R[pivotpos+ high] 并使左边子区间中所有记录的关键字均小于等于基准记录(不妨记为pivot)的关键字pivot key 右边的子区间中所有记录的关键字均大于等于pivot key 而基准记录pivot则位于正确的位置(pivotpos)上 它无须参加后续的排序

  算法描述

 function QuickSort(arr) //交换排序 >快速排序  if (arguments length> )    var low = arguments[ ];   var high = arguments[ ];  else    var low = ;   var high = arr length ;    if(low < high)   // function Partition   var i = low;   var j = high;   var pivot = arr[i];   while(i<j)     while(i<j && arr[j]>=pivot)     j ;    if(i<j)     arr[i++] = arr[j];    while(i<j && arr[i]<=pivot)     i++;    if(i<j)     arr[j ] = arr[i];   //endwhile   arr[i] = pivot;   // end function   var pivotpos = i; //Partition(arr low high);   QuickSort(arr low pivotpos );   QuickSort(arr pivotpos+ high);  else   return;   return arr; 

  直接选择排序基本思想

  n个记录的文件的直接选择排序可经过n 趟直接选择排序得到有序结果  ①初始状态 无序区为R[ n] 有序区为空  ②第 趟排序    在无序区R[ n]中选出关键字最小的记录R[k] 将它与无序区的第 个记录R[ ]交换 使R[ ]和R[ n]分别变为记录个数增加 个的新有序区和记录个数减少 个的新无序区   …… ③第i趟排序  第i趟排序开始时 当前有序区和无序区分别为R[ i ]和R[i n]( ≤i≤n ) 该趟排序从当前无序区中选出关键字最小的记录R[k] 将它与无序区的第 个记录R[i]交换 使R[ i]和R[i+ n]分别变为记录个数增加 个的新有序区和记录个数减少 个的新无序区     这样 n个记录的文件的直接选择排序可经过n 趟直接选择排序得到有序结果

  算法描述

 function SelectSort(arr) //选择排序 >直接选择排序  var st = new Date();  var temp;  for(var i= ; i<arr length; i++)    var k = i;   for(var j=i+ ; j<arr length; j++)     if((arr[j]) < (arr[k]))     k = j;      if (k != i)    temp = arr[i];    arr[i] = arr[k];    arr[k] = temp;       status = (new Date() st) + ms ;  return arr;  cha138/Article/program/Java/JSP/201311/19224

相关参考

使用该财务指标时的几种方式

使用该财务指标时的几种方式一般的投资者在使用该财务指标时有以下几种方式:一、通过每股收益指标排序,用来区分所谓的“绩优股”和“垃圾股”;二、横向比较同行业的每股收益来选择龙头企业;三、纵向比较个股的每

知识大全 一实用的Javascript类库(表格排序)

一实用的Javascript类库(表格排序)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  用法

知识大全 在表单提交前进行验证的几种方式整理

为了减轻后台压力可以利用JavaScript在表单提交前对表单数据进行验证本文整理了常用的几种方式有需求的朋友可以参考下   在表单提交前进行验证的几种方式在Django中为了减轻后台压力可

知识大全 javascript web页面刷新的方法收集

Javascript刷新页面的几种方法  复制代码代码如下:  historygo()locationreload()location=locationlocationassign(location)

知识大全 数据库查询结果的动态排序

  在公共新闻组中一个经常出现的问题是怎样才能根据传递给存储过程的参数返回一个排序的输出?在一些高水平专家的帮助之下我整理出了这个问题的几种解决方案  一用IFELSE执行预先编写好的查询  对于大多

易误诊为体癣的几种皮肤病?

易误诊为体癣的几种皮肤病?许多皮肤病会出现和体癣相类似症状,这样会造成疾病误诊。那哪些皮肤病易误诊为体癣呢?易误诊为体癣的几种皮肤病?易误诊为体癣的几种皮肤病?体癣在临床上呈圆形或多环形斑疹,伴有痒感

易误诊为体癣的几种皮肤病?

易误诊为体癣的几种皮肤病?许多皮肤病会出现和体癣相类似症状,这样会造成疾病误诊。那哪些皮肤病易误诊为体癣呢?易误诊为体癣的几种皮肤病?易误诊为体癣的几种皮肤病?体癣在临床上呈圆形或多环形斑疹,伴有痒感

现货黄金阻力位的几种算法

(1)前期高点;(2)上方均线,时间越长的均线阻力越大;(3)筹码密集区(成交密集平台...现货黄金阻力位的几种算法一、现货黄金阻力位的几种主要判断方法1.最简单的是看前期图形的高点和低点。现货黄金阻

牛皮癣的几种排毒方式

牛皮癣的几种排毒方式?牛皮癣是种顽固疾病,危害性也极其的大,专家称牛皮癣能否治愈很患者体内的毒素积累有很大的关系,那么牛皮癣患者要怎样排解毒素呢,今天我们就来看看牛皮癣的几种排毒方式都有哪些?1、心理

介绍几种关于牛皮癣的几种保健工作

对于牛皮癣患者来讲,应该加强牛皮癣的保健工作,下面我们就来介绍几种关于牛皮癣的几种正确保健,希望对患者有所帮助。1、常做背部的保健工作一般当患者感冒时,患者应该进行按摩背部或进行刮痧,这样可以激活背部