排序這需求不用多說,今天來玩玩
值得一提的是這個排序是從之前的筆記中學來的
http://weisnote.blogspot.tw/2012/02/listbox.html
現在看看以前還真可愛 雖然是上課作業要用泛型克服 ListBox Sort 字串 排列會有問題
但是其實我做了兩次型別的判斷 真是多餘 =3=
重點在於這個排序法是從 MSDN 上學到的
http://msdn.microsoft.com/zh-tw/library/system.windows.forms.listbox.sort.aspx
應該是快速排序法吧
相較於一般很乖的用兩個 for 迴圈 跑半天
他直接使用兩個 while 來進行
每次走訪兩兩比較 並把大值前移
直到無值被交換 則排序結束
這也是少數用到 do while 迴圈的寫法 我喜歡
不說廢話 來看code
javascript 沒泛型 而且沒那麼嚴謹 只需要注意 是否為數值排序
如果以字串排序 "9","7","13","17" 會因為字首1 變成 "13","17","7","9"
2013/1/12 修正版
上面的 swap() 其實有蟲呀 而且是大肥蟲 ZZ
不解釋 順便包成 JQuery 版
(function ($) {
$.parseJsonAndSort = function (jsonStr, field, isNumber) {
var jsonObj = $.parseJSON(jsonStr);
var counter = $(jsonObj).size() - 1;
var swapped;
var swap = function () {
var tmp = jsonObj[counter];
jsonObj[counter] = jsonObj[counter
- 1];
jsonObj[counter - 1] = tmp;
swapped = true;
};
do {
swapped = false;
while (counter > 0) {
if (isNumber) {
var a =
parseInt(jsonObj[counter][field], 10);
var b = parseInt(jsonObj[counter -
1][field], 10);
if (parseInt(jsonObj[counter][field],
10) < parseInt(jsonObj[counter - 1][field], 10)) {
swap();
}
} else {
if (jsonObj[counter][field] <
jsonObj[counter - 1][field]) {
swap();
}
}
counter--;
}
} while (swapped);
return jsonObj;
};
})(jQuery);