如何使用一个循环对数字的字符串或数组进行排序

时间:2015-06-26 06:51:36

标签: java string sorting

程序中的

/ *我们只使用一个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();
 }
}

1 个答案:

答案 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())的效率并不高),将更有效,更容易地做到这一点。