撲克牌排序(JS版) 編碼也快樂!
直接上程式碼,程式碼很簡單,如下:
var aColors = ['spade','heart','diamond','club'], //牌顏色 sCardNum = 'A123456789JQK'.split(''); //牌數字 //建立牌 function createCardObj(){ var aCard = []; for(var i=0,c=-1;i<52;i++){ i%13 == 0 && c++; aCard[i] = { n: i%13, value: sCardNum[i%13], color: aColors[c] } } return aCard; } //打亂牌的順序 function shuffle( aCard ){ for(var j=aCard.length-1, nRnd, oTemp;j>=0;j--){ nRnd = Math.random()*(j+1) >> 0; oTemp = aCard[j]; aCard[j] = aCard[nRnd]; aCard[nRnd] = oTemp; } return aCard; } //**迭代快排** function qs(arr, fnCompare){ var stack = []; stack.push([0,arr.length-1]); var l,r,axis,o; while(stack.length){ o = stack.pop(); l = o[0],r = o[1]; if( l >= r ) continue; axis = once(arr,l,r); stack.push([l,axis-1]); stack.push([axis+1,r]); } function once(arr,l,r){ var axisAtLeft = true, //left right sign, default left; temp; swap(arr,l, (r+l)/2 >> 0); //以中值為軸值 while(l<r){ if( axisAtLeft ){ if( fnCompare(arr[l],arr[r]) ){ swap(arr,l++,r); axisAtLeft = false; }else r--; } else{ if( fnCompare(arr[l],arr[r]) ){ swap(arr,l,r--); axisAtLeft = true; }else l++; } } return l; } function swap(arr,l,r){ var temp = arr[l]; arr[l] = arr[r]; arr[r] = temp; } return arr; } function print( aCard ) { var oColorMap = { 'spade':'#000;', 'heart':'#f00', 'diamond':'#900', 'club': '#777' }; for (var k = 0; k<52; k++){ var oCurCard = aCard[k]; var s = '<span style="color: #fff; background-color:'+ oColorMap[oCurCard.color] +'">'+ oCurCard.color+ '--' + oCurCard.value +'</span><br/>'; document.write(s); } }; var card = shuffle( createCardObj() ); print( qs(card, function(o1,o2){ var mapNum = {'spade': 0,'heart': 1,'diamond': 2,'club': 3}; return (mapNum[o1.color]*13 + o1.n) > (mapNum[o2.color]*13 + o2.n); }) );
將以上程式碼拷貝到firebug中執行,便可看到結果
相關文章
- 編碼也快樂活動:撲克牌排序排序
- 編碼也快樂!撲克牌排序JAVA排序Java
- 編碼也快樂:撲克牌排序 - Python排序Python
- 編碼也快樂活動:撲克牌排序(JavaScript)排序JavaScript
- 撲克牌排序-Scala之畫蛇添足版排序
- 用SQL實現撲克牌排序SQL排序
- 用C實現撲克牌排序排序
- 用Java實現撲克牌排序Java排序
- 用C#實現撲克牌排序C#排序
- 撲克牌排序:基於基數排序的方法排序
- 用cpp0.5實現撲克牌排序排序
- 編碼也快樂:取得3升水C#版C#
- 編碼也快樂:兩水壺的故事之JS程式JS
- java程式:簡易撲克牌遊戲Java遊戲
- 撲克牌速算24 -窮舉(JavaScript)JavaScript
- 簡易撲克牌遊戲JAVA原始碼_新手上路遊戲Java原始碼
- 使用Java語言寫的一個簡單的撲克牌發牌程式碼Java
- Java 簡單實現撲克牌抽象類Java抽象
- SwiftUI:看我展示52張撲克牌,“很快啊!”SwiftUI
- 編碼也快樂:兩隻水壺F#程式
- 編碼也快樂:兩隻水壺Scheme程式Scheme
- 編碼也快樂:兩隻水壺C#程式C#
- Java第三季—簡易撲克牌遊戲Java遊戲
- 純CSS實現撲克牌效果,太牛了吧CSS
- Python程式設計基礎練習——撲克牌發牌問題Python程式設計
- Java入門第三季撲克牌小遊戲Java遊戲
- Java學習--撲克牌比大小的小遊戲Java遊戲
- 自己寫的一個洗撲克牌的java程式Java
- Java第三季撲克牌作業 參考了幕友的排序方法 非常感謝Java排序
- [每日一題] 第十二題:撲克牌中的順子每日一題
- 簡易撲克牌遊戲簡單實現,歡迎指正遊戲
- 【YOLOv5】實現撲克牌的點數識別YOLO
- python例項:解決經典撲克牌遊戲 -- 四張牌湊24點 (一)Python遊戲
- python例項:解決經典撲克牌遊戲 -- 四張牌湊24點 (二)Python遊戲
- 程式設計也快樂: 兩隻水壺 C程式碼 搜尋版程式設計C程式
- JAVA入門第三季——最後練習題撲克牌Java
- java入門最後一章 簡易撲克牌比較大小Java
- 拓撲排序核心程式碼排序