본문 바로가기

실시간 운영체제

[실시간 운영체제] 버블정렬

랜덤으로 5개의 수를 뽑고 오름차순으로 정렬하는 코드입니다.

 

 

package com.example.binarysorting;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import java.util.Random;

public class MainActivity extends AppCompatActivity {

    final Random myRandom = new Random();
    private TextView Text, Sorted_test, Log;

    int Init_numbers[] = {9,5,6,0,3};

    int Array_size = 5;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Text = (TextView) findViewById(R.id.mytext);
        Sorted_test = (TextView) findViewById(R.id.sorted_text);
        Log = (TextView) findViewById(R.id.log);

        //1
        String Init_numbers_string = Make_String_from_Array(Init_numbers);
        Text.setText(Init_numbers_string);

        //2
        //Text.setText(Make_String_from_Array(Init_numbers));
    }

    public String Make_String_from_Array(int[]init){
        String output = "";
        for (int i=0;i<Array_size;i++){
            output = output + init[i] + ", ";
        }
        return output;
    }

    public int[] Binary_sorting(int[] init, int length) {

        //int output[] = new int[length];
        int Number_1, Number_2, Number_swap;

        Log.setText("Original array  \n" + Make_String_from_Array(init) +"\n");

        String Sorting_status = "";

        for (int step = 0; step < length - 1; step++) {
            Log.setText(Log.getText() + "step " + step + "\n");
            for (int substep = step + 1; substep < length; substep++) {

                Number_1 = init[step];
                Number_2 = init[substep];

                if (Number_1 > Number_2) {
                    //swap
                    Number_swap = Number_1;
                    Number_1 = Number_2;
                    Number_2 = Number_swap;
                    Sorting_status = "swap";
                }
                else {
                    //skip
                    Sorting_status = "skip";
                }
                init[step] = Number_1;
                init[substep] = Number_2;

                Log.setText(Log.getText() + Make_String_from_Array(init) + "|");
                Log.setText(Log.getText() + "substep: " + substep +"("+Sorting_status +")\n");
            }
        }
        return init;
    }

    public void click_generate(View view){
        for (int i=0;i<Array_size;i++){
            Init_numbers[i] = myRandom.nextInt(100);
        }
        Text.setText(Make_String_from_Array(Init_numbers));
        Sorted_test.setText("");
        Log.setText("");
    }

    public void click_sort(View view){
        int Sorted_array[] = Binary_sorting(Init_numbers,Array_size);
        Sorted_test.setText(Make_String_from_Array(Sorted_array));
    }

}