現在有乙個學生陣列:
enum ***
inte***ce student
const students: student = [,,
,]
需要按照年齡(或其他屬性)來排序。
在上上篇筆記裡面,提到了阮一峰的快速排序:
var arr = [6,2,5,1,3];
function quicksort(arr:number):number
var pivotindex = math.floor(arr.length/2);
var pivot = arr.splice(pivotindex,1)[0];
var left = as number;
var right = as number;
for(var i =0;i那麼,對於學生陣列的排序,也是基於這個快排的方法。
首先,我們需要給函式簽名新增乙個引數,用來傳遞學生陣列的屬性。
function orderby(arr: titem, selector: (i: titem) => tvalue): titem
(其中用到了泛型的概念)
引數arr代表我們需要傳入的學生陣列,而selector代表學生陣列中具體的某乙個屬性。
接下來這一段就是快速排序的源**:
if (arr.length <= 1) //如果陣列的項小於等於1,直接返回陣列就ok
const pivotindex = math.floor(arr.length / 2);//取中間的索引
const pivot = arr.splice(pivotindex, 1)[0];//取中間的學生
const left = as titem;
const right = as titem;
接下來的這一段,用來做排序的判斷。
for (const i of arr) else
}return orderby(left, selector).concat([pivot], orderby(right, selector));
呼叫的方法:
const studentorderbyage = orderby(students, i => i.age);
console.log(studentorderbyage);
原始碼:
function orderby(arr: titem, selector: (i: titem) => tvalue): titem
const pivotindex = math.floor(arr.length / 2);
const pivot = arr.splice(pivotindex, 1)[0];
const left = as titem;
const right = as titem;
for (const i of arr) else
}return orderby(left, selector).concat([pivot], orderby(right, selector));
}const studentorderbyage = orderby(students, i => i.age);
console.log(studentorderbyage);
js原始碼:
function orderby(arr, selector)
const pivotindex = math.floor(arr.length / 2);
const pivot = arr.splice(pivotindex, 1)[0];
const left = ;
const right = ;
for (const i of arr) else
}return orderby(left, selector).concat([pivot], orderby(right, selector));
}const studentorderbyage = orderby(students, i => i.age);
console.log(studentorderbyage);
Python實現按物件多屬性排序
多屬性排序 把需要排序的屬性拿出來作為乙個 tuple,主要的放前面,次要的放後面。假如某物件有n個屬性,那麼先按某規則對屬性a進行排序,在屬性a相等的情況下再按某規則對屬性b進行排序,以此類推。終端列印結果如下 按照屬性name進行排序 按照ascii進行排序,本案例中,按照小寫字母的順序進行排序...
Python 使用多屬性來進行排序
python 中list.sort 是列表中非常常用的排序函式,key 引數可以對單個屬性進行排序。但是想要實現類似 sql 中order by id,age 一樣,對多個字段進行排序就不支援了。py2 中 sort 函式還有個 cmp 引數可以傳入乙個方法,可以自定義對多個屬性進行排序,py3 中...
兩表多屬性聯查
一方表 jsonignoreproperties value public class cityentity implements serializable 獲取 城市id public long getid 設定 城市名 public void setcityname string citynam...