摘要:首先找到数组中最小的元素,将其与第一个元素交换。随后在剩下的元素中找到最小的元素,与第二个元素交换。依次类推..选择排序的内循环只是比较当前元素与目前已知的最小元素,交换元素的动作写在内循环外,每次交换都能确定一个元素的最终位置。因此,交换的总次数为N,算法的时间效率取决于比较的次数。它有两个很鲜明的特点1,运行时间和输入无关为了找出最小的元素而扫描一遍数组并不能为下一遍扫描提供什么信息,使用选择排序的人可能会惊讶的发现一个已经有序的数组和一个随机排列的数组所用的排序时间竟然一样。2,数据移动是最少的每次交换都会改变两个数组元素的值,因此选择排序只用了N次交换。即交换次数和数组的大小是线性关系
阅读全文
摘要:JavaScriptfunction bubbleSort(ary) { var i, j, temp, len = ary.length; for(i=1; i<len; i++) { for(j=len-1; j>=i; j--) { temp = ary[j]; if(temp < ary[j-1]) { ary[j] = ary[j-1]; ary[j-1] = temp; } } } return ary;}...
阅读全文
摘要:和选择排序一样,当前索引左边的所有元素都是有序的,但它们的最终位置还不确定,为了给更小的元素腾出空间,它们可能会被移动。当索引到达数组的右端时,数组排序就完成了。和选择排序不同的是,插入排序所需要的时间取决于输入中元素的初始顺序。对一个很大且其中的很多元素已经有序的数组会比无序数组或逆序数组排序要快的多。JavaScriptfunction insertSort(ary) { var i, j, len = ary.length; var temp; for(i=1; i<len; i++) { temp = ary[i]; for(j=i...
阅读全文
摘要:最近回顾了下数据结构及算法,以下是用java和js实现的十进制数转换N进制。Java实现/** * baseString 递归调用 * @param num 十进制数 * @param base 要转换成的进制数*/public static String baseString(int num,int base) { String str = "", digit = "0123456789abcdef"; if(num == 0){ return ""; }else { str = baseString(num / base,base
阅读全文
摘要:CSDN上又有个网友提这样的问题,看来这个问题很多时候都会碰到。如下var a=['1','2','3','4'] var b=['1','2']如何比较才能得到数组c=['3','4']基本的算法就是挨个比较两个数组的元素,把不同的跳出来单独放到一个数组里,最后返回该数组。其实数组元素如果是基本类型(Number,String,Boolean)的很好比较,但如果是对象类型就麻烦一些,js对象的比较见:http://www.cnblogs.com/snandy/arc
阅读全文
摘要:首先,看看JS和Java中关系运算符的区别。这里拿大于号做示例(>)。1、Java中的大于号不能用于两个字符串的比较String s1 = "11", s2 = "12";System.out.println(s1>s2); //编译报错,不能通过2、JS中的则可以,比较的字符串中各个字符ASCII大小var s1="11",s2="12";console.log(s1>s2); //输出false.逐次比较字符的ASCII顺序嗯,利用js这个特性可以很好的对数据进行排序。这个是当时做abcc项目
阅读全文