字符串字典排序
把字符串以字典的展⽰形式排序,如把字符串'abc','bad','aade','bdca'排列成''aade',abc','bad','bdca'。
1.使⽤冒泡排序
(1) 相邻两数据两两⽐较,较⼤的放到后⾯,直到把最⼤的字符串放在最后⼀个位置。
(2) 从头开始再进⾏相邻数据两两⽐较,较⼤的放到后⾯,直到把第⼆⼤的字符串放在倒数第⼆个位置。
(3) 依次类推,...,字符串从⼩到⼤依次排列。
var arrStr = ['abc','bad','aade','bdca'];
SortStr = function(){
for(var i = 0;i < this.length - 1;i++){
for(var j = 0;j < this.length - i - 1; j++){
if(strCompare(this[j],this[j+1])){
var temp = this[j];
this[j] = this[j+1];
this[j+1] = temp;
}
}
}
}
function strCompare(str1,str2){//str1⼤于str2,返回true
var minLen,
strLen1 = str1.length,
strLen2 = str2.length;
(strLen1 <= strLen2) ? minLen = strLen1 : minLen = strLen2;
for(var i = 0; i < minLen - 1; i++){
if(str1.charAt(i) > str2.charAt(i)){
return true;
}
if(str1.charAt(i) < str2.charAt(i)){
return false;
}
}
return false;
}
2.使⽤快速排序
(1) 以第⼀个元素为基准,把数组分为两部分,基准左边的字符串⼩于基准,基准右边的字符串⼤于基准。
(2) 再把基准的两边的数组元素分别按照(1)处理。
(3) 依次类推,进⾏递归,...,直到字符串顺序排列。
var arrStr = ['abc','bad','aade','bdca'];
function quickSort(arr,low,height){
if(low >= height){
return;
}
var pivot = arr[low],
i = low,
j = height;
while(i < j){
while(i < j && strCompare(arr[j],pivot)){
j--;
}
arr[i] = arr[j];
while(i < j && strCompare(pivot,arr[i])){
i++;
}
arr[j] = arr[i];
}
arr[i] = pivot;
quickSort(arrStr,low,i - 1);
quickSort(arrStr,i + 1,height);
}
function strCompare(str1,str2){//str1⼤于str2,返回true
var minLen,
strLen1 = str1.length,
strLen2 = str2.length;
(strLen1 <= strLen2) ? minLen = strLen1 : minLen = strLen2;
for(var i = 0; i < minLen - 1; i++){
字符串长度排序
if(str1.charAt(i) > str2.charAt(i)){
return true;
}
if(str1.charAt(i) < str2.charAt(i)){
return false;
}
}
return false;
}
quickSort(arrStr,0,arrStr.length-1);
3.使⽤数组的sort⽅法
    var arrStr = ['abc','bad','aade','bdca'];
arrStr.sort(function(str1,str2){
var minLen,
strLen1 = str1.length,
strLen2 = str2.length;
(strLen1 <= strLen2) ? minLen = strLen1 : minLen = strLen2;
for(var i = 0; i < minLen - 1; i++){
if(str1.charAt(i) > str2.charAt(i)){
return 1;
}
if(str1.charAt(i) < str2.charAt(i)){
return -1;
}
}
return -1;
})

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。