ts 兩種方法實現忽略大小寫的字串排序

2021-08-21 13:45:03 字數 2354 閱讀 9029

這裡有乙個奇奇怪怪的學生陣列:

const students = [,,

,,

,];

現在呢我們要按照這奇奇怪怪的姓名來排序。

規則:忽略大小寫,根據字元在hash table裡位置進行排序。

先寫出排序的方法。

依舊是參照阮一峰的快速排序法 。

傳入三個引數arr、selector、compare,分別代表需要排序的陣列、排序依據、以及可選的比較方法。

function orderbyname(arr: titem, selector: (i: titem) => tvalue, compare?: (a: tvalue, b: tvalue) => number): titem 

if(!compare)

//如果沒有傳入compare方法,就按照以上的方法來排序。

const orderbyarray = arr.slice(0);

const pivotindex = math.floor(orderbyarray.length / 2);

const pivotitem = orderbyarray.splice(pivotindex, 1)[0];

const pivotvalue = selector(pivotitem);

const left = as titem;

const right = as titem;

for (const i of orderbyarray) else

}return orderbyname(left, selector, compare).concat([pivotitem], orderbyname(right, selector, compare));

}//呼叫方法:

const nameorder = orderbyname(students, i=> i.name, ignorecasestringcompare);

console.log(nameorder);

接下來,有兩種不同的比較字串的方法。

方法一是我自己想的(說明自己還是有點進步的嘻嘻)。

方法二是**補充的,可以提高函式執行的效率。

方法一

//ignorecasecharcompare方法用來比較兩個字母在hash table裡的位置大小

function

ignorecasecharcompare

(a: string, b: string)

: number

//ignorecasestringcompare方法用來比較兩個字串

function

ignorecasestringcompare

(a: string, b: string)

: number

// 一直遍歷,直到某位不相等,或者乙個字串已經遍歷完為止,輸出比較結果,跳出函式。

}if (alen < blen) else

}

方法一的缺點在於 需要一次又一次地遍歷字串的每乙個字母,效率比較低。

方法二

function

ignorecasecharcompare

(a: string, b: string)

: number // 同樣是比較字元的方法。

function

ignorecasestringcompare

(a: string, b: string)

: number

return -1;

}// 以上這個判斷的意思就是,執行到這裡如果字串長度已經小於index了,說明兩個字串的前幾位都是相同的,位數短的那乙個排在前面,相等的代表相同。

if (index + 1 > b.length)

const result = ignorecasecharcompare(a.charat(index), b.charat(index));

if (result !== 0)

return ignorecasestringcomparerec(a, b, index + 1);執行到這裡沒有判斷出結果的,index+1回到函式頂部重新執行,也就是比較下乙個字元

}return ignorecasestringcomparerec(a, b, 0);

}

第二種方法就是乙個乙個字元去比較,而不是全部遍歷他的length,比較到某一位字元如果有結果的話就直接return,無需再進行下面的比較了。

其實第二種方法中用到的length可以用別的辦法來代替,但是應該比較複雜,所以**就沒有告訴我。有時間的話再演技一下具體如何實現吧!

ts 兩種方法實現忽略大小寫的字串排序

這裡有乙個奇奇怪怪的學生陣列 const students 現在呢我們要按照這奇奇怪怪的姓名來排序。規則 忽略大小寫,根據字元在hash table裡位置進行排序。先寫出排序的方法。依舊是參照阮一峰的快速排序法 傳入三個引數arr selector compare,分別代表需要排序的陣列 排序依據 ...

Oracle查詢忽略大小寫的實現方法

2010 10 27 17 16 佚名 網際網路 字型大小 t t oracle資料庫中進行查詢時,由於資料有大小寫,可能會對查詢結果造成麻煩,下面就教您乙個忽略大小寫進行查詢的方法,供您參考。oracle查詢有時候要受到一些條件的制約,比如大小寫。下面為您介紹了乙個實現oracle查詢忽略大小寫的...

忽略大小寫的比較 查詢

忽略大小寫的比較 查詢 strcasecmp與strcasestr 在c語言中 string.h 定義了用於進行忽略大小寫的字串比較的函式strcasecmp及strncasecmp,以及用於子串查詢的函式strstr,不過很遺憾的是,c及c 中並未定義strstr的 忽略大小寫版本 以下是strs...