public class selectionSort {
public static int[] sort(int[] arr) {
int min;
int idx = 1;
int minIdx = 0;
int tmp;
for(int i = 0; i < arr.length; i++){
min = arr[i];
for(int j = idx; j < arr.length; j++){
if(min > arr[j]) {
min = arr[j];
minIdx = j;
}
}
if(min != arr[i]) {
tmp = arr[minIdx];
arr[minIdx] = arr[i];
arr[i] = tmp;
}
idx++;
}
return arr;
}
public static void printArray(int[] arr) {
for(int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
public static void main(String[] args) {
int[] arr = {5, 1, 3, 8, 2, 7, 6};
System.out.print("정렬 전 배열 : ");
printArray(arr);
int[] sortArr = sort(arr);
System.out.print("정렬 후 배열 : ");
printArray(sortArr);
}
}
🟢 정렬 전과 정렬 후를 확인할 수 있도록 printArray함수를 따로 만들었음
import java.util.Scanner;
interface PreStack {
void pop();
void push(char item);
boolean isEmpty();
void clear();
void peek();
void printStack();
}
class Stack implements PreStack{
private int idx = 0;
private int size;
char[] arr;
Stack(int n) {
size = n;
arr = new char[n];
}
@Override
public void pop() {
if(idx != 0) {
System.out.print("삭제된 문자 : " + arr[idx-1]);
System.out.println();
arr[idx-1] = ' ';
idx--;
}
}
@Override
public void push(char item) {
System.out.print("입력된 문자 : " + item);
System.out.println();
if(idx == size) {
System.out.println("가득 찼습니다.");
}
else {
arr[idx] = item;
idx++;
}
}
@Override
public boolean isEmpty() {
if(idx == 0) {
return true;
}
else {
return false;
}
}
@Override
public void clear() {
arr = null;
arr = new char[size];
idx = 0;
System.out.println("스택이 초기화 되었습니다.");
}
@Override
public void peek() {
if(idx > 0) {
System.out.print("엿볼려는 문자 : " + arr[idx-1]);
System.out.println();
}
}
@Override
public void printStack() {
if(idx == 0) {
System.out.println("Stack is empty!");
} else {
System.out.print("Stack elements : ");
for(int i = 0; i < idx; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
}
}
public class stackTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("스택 사이즈를 입력하시오.");
int stackSize = sc.nextInt() ;
Stack stack = new Stack(stackSize);
stack.push('A');
stack.printStack();
stack.push('B');
stack.printStack();
stack.push('C');
stack.printStack();
stack.pop();
stack.printStack();
stack.pop();
stack.printStack();
stack.peek();
stack.printStack();
stack.clear();
stack.printStack();
}
}
🟢 PreStack interface를 만들어 printStack 포함 총 6개의 함수를 구현함