㈠ js 怎么把字符串组 按顺序a-z,A-Z,0-9,的顺序排列
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01//EN""
">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gbk">
<title>UntitledDocument</title>
<script>
window.onload=function(){
vara="1我来a2你b3他d";//要排序的字符串a
varb=a.split("");//分割源字符串a为数组b
b.sort();//数组b升序排序(系统自带的方法)
varc=b.join("");//把数组b每个元素连接成字符串c
alert(c);//输出最终排序好的字符串
}
</script>
</head>
<body>
</body>
</html>
整个过程注释写得很清楚了,希望对你有帮助
㈡ jqgrid 怎么实现中文排序 js
sql排序
在Model层加入,需要生成setter、getter方法。
public String getSord() {
return sord;
}
/*
* 设置 sord代表排序规回则(asc、desc)
* @param sord
*/
public void setSord(String sord) {
this.sord = sord == null ? null : sord.trim();
}
/**
* 获取答 sidx代表排序的列名
* @return 获取sidx代表排序的列名
*/
public String getSidx() {
return sidx;
}
/**
* 设置 sidx代表排序的列名
* @param sidx
*/
public void setSidx(String sidx) {
this.sidx = sidx == null ? null : sidx.trim();
}
㈢ js 按名称排序
1. 冒泡排序吧!
交换那里为什么这么做,看上去Books应该是Array, push是array的方法,是在array最后添加若干元素。而Books[i]应该是一个Book,你确定他有push这个方法吗?
这么写就可以了:
var tmp =$scope.reader.Books[j],
$scope.reader.Books[j] = $scope.reader.Books[j + 1],
$scope.reader.Books[j + 1] = tmp;
2. 另外若不考虑排序的稳定性可以使用js原生的sort,很高效的。
1)
var arr = [1, 3, 2, 4];
arr.sort(); //arr 变成了[1, 2, 3, 4]
2)
//按名称排序。
var arr = [{k: 1, v: 's'}, {k: 3, v: 's'}, {k: 2, v: 'f'}, {k: 4, v: 'h'}];
arr.sort(functoin(a, b) {
return a.k - b.k;
});
//arr编程 [{k: 1, v: 's'}, {k: 2, v: 'f'}, {k: 3, v: 's'}, {k: 4, v: 'h'}
即可以按arr.k进行排序。
sort中的这个参数是个函数。函数返回负数表示a应该排在b的前面,正数相反(b在a的前面)。
3)
js原生的sort排序在不同的浏览器中的实现是不同的。请看下例:
在2)中若arr = [{k: 1, v: 's'}, {k: 3, v: 's'}, {k: 1, v: 'f'}, {k: 4, v: 'h'}]
即第2个(从0开始的)和第2个数据的k一样(arr[0].k==1 arr[2].k == 1)
这样的数据用2)的方式排序的结果怎么样的?
结果可能是: sfsh也有可能是fssh,因为sort里面的那个函数并没有强调返回0时谁应该在前面。
这就是排序的稳定性,稳定排序是指:排序时对于值相同的元素,其相对位置不会发生变化。据我说知:firefox排序算法是合并排序;chrome在对待少量数据是用插入排序,对待数据量较大时用快速排序(好像是以10个元素个数为界限);ie排序算法我不知道,但是好像它的排序很慢,它用的排序也是不稳定的(会不会用的是选择排序呢?)。
现在说一下个算法的稳定性和效率吧:
a).快排。顾名思义,效率很高(o(nlgn)),chrome选择了他,并做了优化(少量数据用插入排序优于快速排序的),效率很高,一般的排序都选择用它;但他是非稳定排序。
b).合并排序。效率比快排差(时间负责度o(nlgn),空间复杂度o(n)),一般较少用于排序;他是稳定排序。
c)堆排序。o(nlgn); 非稳定排序。
d)冒泡、插入 排序。 o(n^2); 稳定排序。
e)选择排序。 o(n^2): 非稳定排序。
这里说了好多废话。。。
4)给你写个排序怎么样。你要就说,我就去写,不要就不写了。你的冒泡排序效率很低的。。。
㈣ js对一个字符串根据ASCII码从小到大排序(字典序)
js对一个字符串根据ASCII码从小到大排序(字典序)
实现思路: 将带空格分隔的字符串split成数组,利用数组sort()排序方法,在该方法里面用chartCodeAt()方法比对元素间同位置的字符的ASCII码(同一位置字符的ASCII码相同则继续比对下一个字符)
㈤ JS中的各种排序方法
数据结构算法中排序有很多种,常见的、不常见的,至少包含十种以上。根据它们的特性,可以大致分为两种类型:比较类排序和非比较类排序
冒泡排序是一次比较两个元素,如果顺序是错误的就把它们交换过来。,直到不需要再交换
快速排序的基本思想是通过一趟排序,将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可以分别对这两部分记录继续进行排序,以达到整个序列有序
从数列中挑出一个元素,称为 “基准”(pivot);然后重新排序数列,所有元素比基准值小的摆放在基准前面、比基准值大的摆在基准的后面;在这个区分搞定之后,该基准就处于数列的中间位置;然后把小于基准值元素的子数列(left)和大于基准值元素的子数列(right)递归地调用 quick 方法排序完成,这就是快排的思路
通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入,从而达到排序的效果
插入排序的思路是基于数组本身进行调整的,首先循环遍历从 i 等于 1 开始,拿到当前的 current 的值,去和前面的值比较,如果前面的大于当前的值,就把前面的值和当前的那个值进行交换,通过这样不断循环达到了排序的目的
将最小的元素存放在序列的起始位置,再从剩余未排序元素中继续寻找最小元素,然后放到已排序的序列后面……以此类推,直到所有元素均排序完毕
堆排序是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质,即子结点的键值或索引总是小于(或者大于)它的父节点。堆的底层实际上就是一棵完全二叉树,可以用数组实现
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并
通过 mid 可以把该数组分成左右两个数组,分别对这两个进行递归调用排序方法,最后将两个数组按照顺序归并起来
㈥ 用javascript如何实现按名称排序
简单排序:
vararr=[1,8,4,5,9,3];
arr.sort();
console.log(arr);//1,3,4,5,8,9
console.log(arr.reverse());//9,8,5,4,3,1