Javascript 不带任何内置方法的字符串排序
我想在javascript中对字符串进行排序,而不使用内置方法,只需使用for和比较,如'a'>'b' 一些不起作用的东西:Javascript 不带任何内置方法的字符串排序,javascript,string,sorting,replace,functional-programming,Javascript,String,Sorting,Replace,Functional Programming,我想在javascript中对字符串进行排序,而不使用内置方法,只需使用for和比较,如'a'>'b' 一些不起作用的东西: 函数替换(str,i,char){ 返回str.substr(0,i)+char+str.substr(i+1) } 功能交换(str、i1、i2){ 返回replaceAt(replaceAt(str,i1,str[i2]),i2,str[i1]); } 函数排序(str){ var=str; 对于(变量i=0;istr[i+1]){ str=交换(str,i,i+1
函数替换(str,i,char){
返回str.substr(0,i)+char+str.substr(i+1)
}
功能交换(str、i1、i2){
返回replaceAt(replaceAt(str,i1,str[i2]),i2,str[i1]);
}
函数排序(str){
var=str;
对于(变量i=0;istr[i+1]){
str=交换(str,i,i+1)
}
}
返回str;
}
您的代码未应用任何排序算法逻辑,建议您至少阅读1以解决问题
下面是一个程序,它使用生成程序的预期输出
swap
和replace
功能工作正常
function sort(str) {
var sorted = str;
//Selection sort
for (var i = 0; i < str.length; i++) {
for(var j = i + 1; j < str.length - 1; j++) {
if (str[i] < str[j]) {
str = swap(str, i, j)
}
}
}
return str;
}
console.log(sort("zaasfweqrouoicxzvjlmmknkniqwerpopzxcvdfaa"));
//output: aaaaccdeeffiijkklmmnnoooppqqrrsuvvwwxxzzz
函数排序(str){
var=str;
//选择排序
对于(变量i=0;i
数组=[4,10,2,9,6,3,13,5];
函数数组操作()
{
var count=array.length-1,
临时雇员
J
我
对于(j=0;j数组[i+1])
{
温度=阵列[i+1];
数组[i+1]=数组[i];
数组[i]=温度;
}
}
}
document.write(“升序为
”)
对于(k=0;k=0;k--){
写入(数组[k]+“
”);
}
document.write(“最大的数字是
”)
对于(k=array.length-1;k>=0;k--){
if((数组[k])>数组[k-1]){
document.write(数组[k]+“
”)
打破
}
}
文档。写入(“最小数字为
”)
对于(k=0;k函数排序(arr){
arr=arr.split(“”);
对于(i=0;iarr[i]){
温度=arr[i];
arr[i]=arr[j];
arr[j]=温度;
}
}
}
返回arr.join(“”);
}
日志(排序(“dcna”);
sorting string的精确排序方式?给我们一个排序字符串的示例。您只交换相邻元素。我建议您阅读正确的排序算法。任何认真的程序员都应该在书架上放一份Knuth的“sorting and search”。因此,str=str.split(“”).Sort().join(“”);
不是你想要的吗-P@Barmar:谢谢barmar,但我也在找一本关于算法和编程的书,讽刺的是,我可以自由撰稿并构建完整的web应用程序,因为我是一个差劲的程序员,所以我只能想象如果我是一个好程序员,我能做些什么。RocketHazmat:谢谢你,但没有!步骤1:从那个人那里挑选一个排序算法y、 很多都存在。第2步:实现该排序算法。在完成第1步之前,不要继续执行第2步。因为这似乎是一个学习练习,所以花一些时间了解几种不同的排序算法及其相对优势是值得的。
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
array=[4, 10, 2, 9, 6, 3, 13, 5];
function arrayOperations()
{
var count = array.length - 1,
temp,
j,
i;
for (j = 0; j < count; j++)
{
for (i = 0; i < count; i++)
{
if (array[i] > array[i + 1])
{
temp = array[i + 1];
array[i + 1] = array[i];
array[i] = temp;
}
}
}
document.write("ascending order is <br>")
for(k=0;k<=array.length-1;k++){
document.write(array[k]+ "<br>");
}
document.write("descending order is <br>")
for(k=array.length-1;k>=0;k--){
document.write(array[k]+ "<br>");
}
document.write("biggest number is <br>")
for(k=array.length-1;k>=0;k--){
if((array[k])>array[k-1]){
document.write(array[k]+"<br>")
break;
}
}
document.write("smallest number is <br>")
for(k=0;k<=array.length;k++){
if((array[k])<array[k+1]){
document.write(array[k]+"<br>")
break;
}
}
}
</script>
<title></title>
</head>
<body>
array=[4, 10, 2, 9, 6, 3, 13, 5]
<br>
<input type="button" onclick="arrayOperations()" value="find">
</body>
</html>
function sort(arr) {
arr = arr.split("");
for (i = 0; i < arr.length; i++) {
for (j = 0; j < arr.length; j++) {
if (arr[j] > arr[i]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr.join("");
}
console.log(sort("dcna"));