Java的sort的排序及使用詳解
sort() 方法在適當?shù)奈恢脤?shù)組的元素進行排序,并返回數(shù)組。數(shù)組會按照字符的Unicode進行排序(把數(shù)組里面當成字符串處理)
1.按升序排列:
var arr=[1,11,2,22,5,4,0];
arr.sort(
function(n1,n2){
return n1-n2;
});
alert(arr);//[0,1,2,4,5,11,22]2. 隨機排序:
var arr=[1,11,2,22,5,4,0];
arr.sort(
function(n1,n2){
return Math.random()-0.5;
});
alert(arr);3.按降序排列:
var arr=[1,11,2,22,5,4,0];
arr.sort(
function(n1,n2){
return n2-n1;
});
alert(arr);4.根據(jù)參數(shù)屬性值排序
sort方法接收一個函數(shù)作為參數(shù),這里嵌套一層函數(shù)用來接收對象屬性名,其他部分代碼與正常使用sort方法相同
var arr = [
{name:'zopp',age:0},
{name:'gpp',age:18},
{name:'yjj',age:8}
];
function compare(property){
return function(a,b){
var value1 = a[property];
var value2 = b[property];
return value1 - value2;
}
}
console.log(arr.sort(compare('age')))5. 根據(jù)參數(shù)不同,來確定是升序排列,還是降序排序
sortBy: function(attr,rev){
//第二個參數(shù)沒有傳遞 默認升序排列
if(rev == undefined){
rev = 1;
}else{
rev = (rev) ? 1 : -1;
}
return function(a,b){
a = a[attr];
b = b[attr];
if(a < b){
return rev * -1;
}
if(a > b){
return rev * 1;
}
return 0;
}
}
newArray.sort(sortBy('number',false))
V8 引擎 sort 函數(shù)只給出了兩種排序 InsertionSort 和 QuickSort,數(shù)量小于10的數(shù)組使用 InsertionSort,比10大的數(shù)組則使用 QuickSort。
原理:sort()方法如何實現(xiàn)排序
第一次1和8比較,1<8,不需要調整位置。 ?? 第二次8和3比較,8>3,需要調整位置。但是這里沒有交換位置,僅僅是8覆蓋了3位置。這里就可以推斷出不是單純的使用了冒泡算法。 ??第三是1和3比較,1<3,3替換了8的位置。什么鬼,幾個意思???看到這里我也是表示不懂呀。那就繼續(xù)往下看咯。 ?? 第四是8和5比較,8>5,又僅僅是覆蓋,沒有交換位置。還是不懂,繼續(xù)往下! ??第五是3和5比較,3<5,5替換了8的位置,不懂,繼續(xù)往下! ?? 第六是8和-1比較,8>-1, 還僅僅是覆蓋,繼續(xù)往下! ??第七、八、九次,-1依次和5,3,1做了比較,并且5,3,1都移動了一次位置。
我們得出了結論:sort()方法是使用的冒泡和插入兩種方式結合進行排序的。
模擬排序:
var arr=[32,12,4,20,1,54,56,6,14];
function findMinIndex(arr,start){
var iMin=arr[start];
var iMinIndex=start;
for(var i=start;i<arr.length;i++){
if(iMin>arr[i]){
iMin=arr[i];
iMinIndex=i;
}
}
return iMinIndex;
}
for(var i=0;i<arr.length;i++){
var n=findMinIndex(arr,i);
var tem;
tem=arr[n];
arr[n]=arr[i];
arr[i]=tem;
}
alert(arr);總結
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!
相關文章
Spring Boot2發(fā)布調用REST服務實現(xiàn)方法
這篇文章主要介紹了Spring Boot2發(fā)布調用REST服務實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-04-04
spring通過filter,Interceptor統(tǒng)一處理ResponseBody的返回值操作
這篇文章主要介紹了spring通過filter,Interceptor統(tǒng)一處理ResponseBody的返回值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
SpringBoot+Redis實現(xiàn)不重復消費的隊列的示例代碼
本文主要介紹了SpringBoot+Redis實現(xiàn)不重復消費的隊列的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-07-07
Spring Boot與Spark、Cassandra系統(tǒng)集成開發(fā)示例
本文演示以Spark作為分析引擎,Cassandra作為數(shù)據(jù)存儲,而使用Spring Boot來開發(fā)驅動程序的示例。對spring boot 與spark cassandra集成開發(fā)示例代碼感興趣的朋友跟著腳本之家小編一起學習吧2018-02-02
Jenkins安裝多個jdk版本并在項目中選擇對應jdk版本
在使用jenkins構建項目時會遇到不同的job需要配置不同版本的jdk,下面這篇文章主要給大家介紹了關于Jenkins安裝多個jdk版本并在項目中選擇對應jdk版本的相關資料,需要的朋友可以參考下2024-03-03

