/ *我们只使用一个for循环来对字符串或数组进行排序* /
public class Sachin {
String original="chinumaruti";
int len=original.length();
char ch[]=original.toCharArray();
int i=0,j=0;
void sorting()
{
for(i=0;i<original.length()-1;i++) /* for loop */
{
if(ch[i]<ch[i+1])
{
char temp=ch[i];
ch[i]=ch[i+1];
ch[i+1]=temp;
}
if(i==len-2)/* again going to intialize for loop */
{
i=-1;
j++;
}
if(j==len-2)/* for preventing the loop to run infinite times */
{
System.out.println(ch);
break;
}
}
}
public static void main(String []args){
Sachin ob=new Sachin();
ob.sorting();
}
}
答案 0 :(得分:1)
虽然这在技术上是一个单一的&#34;循环,这实际上是bubble sort的实现。
将循环迭代器重置为-1是一种不好的做法:
if(i==len-2)/* again going to intialize for loop */ {
i=-1;
j++;
}
它使您的代码可读性显着降低,难以理解。
代码在双循环(它仍然是O(n^2)
)中使用智能排序算法(包括java中已经存在的算法:Arrays.sort()
)的效率并不高),将更有效,更容易地做到这一点。