js实现两种实用的排序算法——冒泡、快速排序

 分类:js(4443)(0)零:数据准备,给定数组arr=[2,5,4,1,7,3,8,6,9,0];一:冒牌排序1思想:冒泡排序思想:每一次对比相邻两个数据的大小,小的排在前面,如果前面的数据比后面的大就交换这两个数的位置    要实现上述规则需要用到两层for循环,外层从第一个数到倒数第二个数,内层从外层的后面一个数到最后一个数2特点:排序算法的基础。简单实用易于理解,缺点是比较次数多,效率较低。3实现: [html]viewplaincopy var times=0;  var bubbleSort=function(arr){      for(var i=0;i<arr.length-1;i++){          for(var j=i+1;j<arr.length;j++...

SQL你必须知道的-查询聚合分组排序

useMySchoolTwo   --简单查询   select*fromStudent   --话说这种查询的效率要比*要高级点   selectsId,sName,sAge,sNo,sBirthday,sClassId,sSexfromStudent   selectsNamefromstudent   --给列改名三种方式   selectsNameas''姓名'',sAgeas''年龄'',sNoas''学号''fromstudent   selectsName''姓名'',sAge''年龄'',sNo''学号''fromstudent   select''姓名''=sName,''年龄''=sAge,''学号''=sNofromstudent   --添加where查询条件&nbs...

彻底弄懂JS的事件冒泡和事件捕获

  先上结论:在事件执行流中有两种执行方式。一种是事件冒泡(即事件的执行顺序是从下往上执行的); 另一种是捕获(即事件的执行顺序是从上往下执行的);      阻止事件冒泡: returnfalse; 火狐/ie都支持         function(even){         varev=even||window.even;                  if(ev&&ev.stopPropagation){       &nbs...

利用js排序html表格

在web前端开发中会遇到排序等功能,当然也可以用服务器端来排序,今天我做一个笔记,怎么用js来实现这些复杂的功能呢。在学习这个之前一定得用htmldomjquery的知识,要不没有办法看明白的,当然也不包括你是一个天才了。哈哈!好了,先说一下思路,这里说一下,在学习一个js特效的时候思路很重要,可以说你不用对js多么的精通,但是一个功能放在你的面前,你必须有个很清晰的思路,这样做起来就很容易了,就算是再困难的特效也不例外!一共有四个步骤:首先要给触发排序的控件添加事件,这里我就略过了。1.把要排序的内容添加到数组里vartIndex=parseInt($(this).index());varvalueArray=newArray();varp=0;for(vari=1;i<$("tabletr").length;i++){ if(tIndex!=0){valueArray[p]=parseInt($("tabletr:eq("+i+")td").eq(tIndex).html());}else{valueArray[p]=$("tabletr:eq("+i+")td")...

Linux排序命令sort(转)

Linuxsort命令用于将文本文件内容加以排序。sort可针对文本文件的内容,以行为单位来排序。语法sort[-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]参数说明:-b忽略每行前面开始出的空格字符。-c检查文件是否已经按照顺序排序。-d排序时,处理英文字母、数字及空格字符外,忽略其他的字符。-f排序时,将小写字母视为大写字母。-i排序时,除了040至176之间的ASCII字符外,忽略其他的字符。-m将几个排序好的文件进行合并。-M将前面3个字母依照月份的缩写进行排序。-n依照数值的大小排序。-o<输出文件>将排序后的结果存入指定的文件。-r以相反的顺序来排序。-t<分隔字符>指定排序时所用的栏位分隔字符。+<起始栏位>-<结束栏位>以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。--help显示帮助。--version显示版本信息。实例在使用sort命令以默认的式对文件的行进行排序,使用...
代码星球 代码星球·2020-04-04

Java实现快速排序

Java实现快速排序  算法思想:基于分治的思想,是冒泡排序的改进型。首先在数组中选择一个基准点(该基准点的选取可能影响快速排序的效率,后面讲解选取的方法),然后分别从数组的两端扫描数组,设两个指示标志(lo指向起始位置,hi指向末尾),首先从后半部分开始,如果发现有元素比该基准点的值小,就交换lo和hi位置的值,然后从前半部分开始扫秒,发现有元素大于基准点的值,就交换lo和hi位置的值,如此往复循环,直到lo>=hi,然后把基准点的值放到hi这个位置。一次排序就完成了。以后采用递归的方式分别对前半部分和后半部分排序,当前半部分和后半部分均有序时该数组就自然有序了。排序过程:       算法实现:publicstaticintpartition(int[]array,intlo,inthi){//固定的切分方式intkey=array[lo];while(lo<hi){while(array[hi]>=key&&hi>lo){//从后半部分向前扫描hi--...
代码星球 代码星球·2020-04-03

常见排序算法题(java版)

常见排序算法题(java版)org.rut.util.algorithm.support; /** *@version1.0publicimplements/**(non-Javadoc)     publicintintfori=            int)&&(data[j]<data[j-                );        } for;i<arr.length;i++){   (varj=i+1iftemp=arr[i];    &...
代码星球 代码星球·2020-04-03

程序员那些必须掌握的排序算法

2019年08月17日16:03:39 #Temptation 阅读数38529 文章标签: 排序算法 更多分类专栏: 算法 版权声明:本文为博主原创文章,遵循 CC4.0BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/qq_42453117/article/details/99680831现在的IT行业并不像以前那么好混了,从业人员过多,导致初级程序员过剩,这也间接导致了公司的招聘门槛越来越高,要求程序员掌握的知识也越来越多。算法也是一个争论了很久的话题,程序员到底该不该掌握算法?不同的人有不同的答案,而事实上,很多公司都对算法有一定的要求,有些公司直接在面试的时候便会要求面试者手写算法题。这就对程序员的技术要求产生了很大的考验,所以面对如今的大环境,我们必须掌握算法,才能在今后的工作中占据一席之地。那么接下来,我就简单介绍一下几个排序算法,希望对你们有所帮助。1.冒泡排序冒泡排序(BubbleSort),是一种较简单的排序算法。它重复...

快速排序(java实现)

快速排序(java实现)快速排序算法思想:基于分治的思想,是冒泡排序的改进型。首先在数组中选择一个基准点(该基准点的选取可能影响快速排序的效率,后面讲解选取的方法),然后分别从数组的两端扫描数组,设两个指示标志(lo指向起始位置,hi指向末尾),首先从后半部分开始,如果发现有元素比该基准点的值小,就交换lo和hi位置的值,然后从前半部分开始扫秒,发现有元素大于基准点的值,就交换lo和hi位置的值,如此往复循环,直到lo>=hi,然后把基准点的值放到hi这个位置。一次排序就完成了。以后采用递归的方式分别对前半部分和后半部分排序,当前半部分和后半部分均有序时该数组就自然有序了。排序过程:       算法实现:publicstaticintpartition(int[]array,intlo,inthi){//固定的切分方式intkey=array[lo];while(lo<hi){while(array[hi]>=key&&hi>lo){//从后半部分向前扫描hi--;}arra...
代码星球 代码星球·2020-04-03

图解排序算法(二)之希尔排序

   希尔排序是希尔(DonaldShell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。本文会以图解的方式详细介绍希尔排序的基本思想及其代码实现。  希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。  简单插入排序很循规蹈矩,不管数组分布是怎么样的,依然一步一步的对元素进行比较,移动,插入,比如[5,4,3,2,1,0]这种倒序序列,数组末端的0要回到首位置很是费劲,比较和移动元素均需n-1次。而希尔排序在数组中采用跳跃式分组的策略,通过某个增量将数组元素划分为若干组,然后分组进行插入排序,随后逐步缩小增量,继续按组进行插入排序操作,直至增量为1。希尔排序通过这种策略使得整个数组在初始阶段达到从宏观上看基本有序,小的基本在前,大的基本在后。然后缩小增量,到增量为1时,其实多数情况下只需微调即可,不会涉及过多的数据移动。  我们来看下希尔...
代码星球 代码星球·2020-04-03

排序算法

 0、算法概述0.1算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 0.2算法复杂度0.3相关概念稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面。时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数。 1、冒泡排序(BubbleSort)冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 1.1算法描...
代码星球 代码星球·2020-04-03

十大经典排序算法(动图演示)

 0、算法概述0.1算法分类十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。 0.2算法复杂度0.3相关概念稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面。时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数。 1、冒泡排序(BubbleSort)冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 ...

程序员必知的8大排序

程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现)2012年05月12日11:18:05 阅读数:56853 标签: java数据结构算法 更多个人分类: Java 版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/pzhtpf/article/details/7559896前几天,看到一篇前辈的博文“程序员必知的8大排序”,不禁的手痒起来,重新翻开严蔚敏老师的《数据结构》复习了一遍,然后一一的用java去实现,其中有不足之处,还望各位道友指正出来。 先来看看8种排序之间的关系: 1,  直接插入排序   (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2]个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。(2)实例(3)用java实现 packagecom.nju...
代码星球 代码星球·2020-04-03

二维数组排序

//二分查找(数组里查找某个元素)/**二维数组排序,*@paramarray$arr被排序的数组,*@paramstr$keys排序的健值,*@paramint$order排序规则,1是升序,0是降序*reuturnarray排序后的数组*实现思路:*把二维数组转成一维数组进行,键值排序*初始$arr=[['name'=>'jack','age'=>23],['name'=>'jack','age'=>22]];*$arr1=[0=>23,1=>22];*$arr3=[['name'=>'jack','age'=>23],['name'=>'jack','age'=>22]];;**/functionarr2_sort($arr,$keys,$order=1){if(!is_array($arr)){returnfalse;}$arr2=[];foreach($arras$k=>$v){$arr2[$k]=$v[$keys];}if($order==1){asort($arr2);}else{sort($arr2);}...
代码星球 代码星球·2020-04-02

算法回顾篇:插入排序从理论到实践

更多分享:www.catbro.cn一、前言:我们在上一章节中学习了算法回顾篇:选择排序,本次我们将继续学习插入排序二、算法介绍简述(从大到小排序):有1~N个待排序元素注:后面所说的x元素或者y元素及下标为x或者y对应的序列中的元素1、取x(此时x=1)元素作为当前待比较元素;2、令y=x;3、取y-1元素与y元素进行比较,如果y元素大于y-1位置元素,则y元素与y-1元素进行交换;4、判断y是否大于0,如果大于0,则继续重复执行第3步操作;5、判断x+1是否大于序列的长度,如果不大于,则x=x+1;继续执行第2步,否则排序结束从上面可以看出,插叙排序的特点是,带排序元素前面的元素序列是已经排序好的了,所以当x等于序列的最后一个元素的时候且x已经排序好时,此时该序列也就排序完了。三、代码实现代码如下,里面的SortUtils部分代码请看算法回顾篇:选择排序:classInsertSortDemo{funsort(list:Array<Comparable<Any>>){for(iin1..(list.size-1)){varj=i;while(j>0&&...
首页上一页...5556575859...下一页尾页