㈠ 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