2013-02-05 150 views
-4

有100个块的数组,这里每个块都包含一种颜色,并且这种颜色随机地来自字符a,b,c,...,z的数组。对字符数组进行排序

例: A B d例如I H˚Fd一个

现在你必须编写一个程序,将返回排序后的数组具有下列条件。

  1. 请按照下面的交换顺序。

字符最大交换

B 2

的C 3

......

Ž26

输出: a a b d d e f h g i

我已经使用了以下方法。

//返回块号

int getNoOfBlocks();

//返回特定块的字母表

char getData(int);

//交换值

空隙swapBlock(INT,INT);

空隙arrangeBlocks(无效)

{

INT大小= getNoOfBlocks();

for(int i = 0 ; i < size; i++) 

    { 

     int min = getData(i)-97; 

     int pos = 0; 

     int ascii = 0; 

     for(int j = i + 1; j < size; j++) 

      { 

       ascii = getData(j)-97; 

       if(min > ascii) 

        { 

         min = ascii; 

         pos = j; 

        } 

      } 

     swapBlock(i, pos+1); 

    } 

}

+2

去做你你自己的作业... – thumbmunkeys

+0

这个问题是基于最大交换,这是不同于其他类型的排序机制。 – BITSSANDESH

+1

是和?你想要有人为你写程序吗?你可以问一个具体的问题,然后你可能会得到一个答案 – thumbmunkeys

回答

1

您交换了错误的元素,它应该是:

swapBlock(i, pos); 

而且你的第一个循环是错误的,它应该是:

for(int i = 0 ; i < size - 1; i++)