-4

有一个由 100 个块组成的数组,这里每个块包含一种颜色,这种颜色随机来自一个字符数组 a,b,c,...,z。

例如:abdegihfda

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

  1. 应遵循以下交换顺序。

字符最大交换

一个 1

b 2

3

……

26

输出:aabddefhgi

我使用了以下方法。

//返回块数

int getNoOfBlocks();

//返回特定块的字母

字符 getData(int);

//交换值

无效交换块(int,int);

无效排列块(无效)

{

int size = 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);

    }

}

4

1 回答 1

1

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

  swapBlock(i, pos);

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

  for(int i = 0 ; i < size - 1; i++)
于 2013-02-05T18:46:04.743 回答