' P '

whatever I will forget

Java arrayの中の数字を降順で並び替える

atCoderでランクAくらいの問題レベル(超初心者)のSWAP系だと思いますが、苦戦しまくったので今後のために、考え方をメモっておきます.
ちょっとまだ模範解答を見ていない状態です、とりあえず自身で導き出した答えをメモっておきたい感じ。笑

前提

  1. aryに5つ数字が入る場合を想定(厳密にいうと何個来ても対応できるように考えた、実際、この考えは不要かもしれない)
  2. max/min関数など便利なライブラリ関数も知っていない状態

考え方

  1. 最小値をaryの先端と仮定する
  2. ary内の全値と比較して本当の最小値を見つける
  3. 最小値とaryの最後尾にもっていく
  4. その際にaryの最後尾にあった値と入れ替える
  5. aryの幅をひとつずつ減らしていく
  6. 1-3の繰り返し

f:id:mankozooyork:20200411014603p:plain

サンプルコード

いまから模範解答みます。自作コードはパッと見て理解しにくいです。
最終的にswapするところはもうtmp値でもないし...

    public static int[] sortIntegers(int[] array) {
        int tmpMinValue = array[0];
        int tmpMinPosition = 0;
        int loopCnt = array.length;

        while(loopCnt != 0) {
            for (int i = 0; i < loopCnt; i++) {
                if (tmpMinValue > array[i]) {
                    tmpMinValue = array[i];
                    tmpMinPosition = i;
                }
            }
            array[tmpMinPosition] = array[loopCnt-1];
            array[loopCnt-1] = tmpMinValue;
            tmpMinValue = array[0];
            tmpMinPosition = 0;
            loopCnt -= 1;
        }
        return array;
    }