先根据个位,将个位数从小到大排列;将个位排列好的数再对十位数的从小到大排列。
Queue.js
function Deque() {this.dataStore = [];//进队列,从尾部添加数据this.enqueue = function (data) {var length = this.length();this.dataStore[length] = data;}//进队列,从头部添加数据this.enqueuehead = function (data) {var length = this.length();for(var i=length;i>=1;i--) {this.dataStore[i] = this.dataStore[i-1];}this.dataStore[0] = data;}//从队列头部删除数据,并且获得这个数据this.dequeue=function () {var length = this.length();var front = this.dataStore[0];for(var i=1;i<length;i++) {this.dataStore[i-1] = this.dataStore[i];}this.dataStore[length-1] = null;this.dataStore.length--;return front;}//从队列尾部删除数据,并且获得这个数据this.dequeueback=function () {var length = this.length();var back = this.dataStore[length-1];this.dataStore[length-1] = null;this.dataStore.length--;return back;}//依次返回当前队列的数据this.toString=function () {return this.dataStore.toString();}//获得队列最前面的数据this.front=function(){return this.dataStore[0];}//获得队列最后面的数据this.back=function () {return this.dataStore[this.dataStore.length-1];}//判断当前队列是否为空this.empty=function () {if(this.dataStore.length==0){return true;}else{return false;}}//获取队列的长度this.length = function () {return this.dataStore.length;}//遍历队列this.forEach = function (call) {//获得队列的长度var length = this.length();for(var i=0;i<length;i++) {call(this.dataStore[i]);}}
}
HTML
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>快速排序</title><script src="Queue.js"></script>
</head>
<body></body>
<script>//创建两个队列,一个用于存储除10的余数,一个用于存储除10的商var queues = [];var queues1 = [];for(var i=0;i<10;i++) {queues[i] = new Deque();queues1[i] = new Deque();}//随机产生10个1到99的数for(var i=0;i<10;i++) {var rand = Math.floor(Math.random()*99)+1;var index = rand%10;//将除10的余数加到队列queues中,使个位数从小到大排列queues[index].enqueue(rand);}for(var i=0;i<10;i++) {//遍历队列queuesqueues[i].forEach(function (item) {var index = Math.floor(item/10);//将除10的商加到队列queues1中,使十位数从小到大排列queues1[index].enqueue(item);})}for(var i=0;i<10;i++) {//遍历队列queues1queues1[i].forEach(function (item) {console.log(item);})}</script>
</html>