JAVA#13 _ ์ ํ์ ๋ ฌ๊ณผ ํจ์ํ
#1 ์ ํ์ ๋ ฌ
: ๊ฐ์ฅ ์์ ์์๋ฅผ ์ฐพ์์ ๋ฐฐ์ด์ ๋งจ ์๊ณผ ๊ตํํ๋ ๋ฐฉ์์ผ๋ก ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ
// ๋ฐฐ์ด์ ๊ฐ ์์น์ ๋ํด
for (int i = 0; i < n - 1; i++) {
// ๊ฐ์ฅ ์์ ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ์ฐพ๊ธฐ ์ํ ๋ณ์
int minIndex = i;
// i ์ดํ์ ์์๋ค ์ค์์ ๊ฐ์ฅ ์์ ๊ฐ์ ์ฐพ๋๋ค
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// ๊ฐ์ฅ ์์ ๊ฐ์ด i๋ฒ์งธ ์์น๊ฐ ์๋๋ฉด ๊ตํ
if (minIndex != i) {
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
#2 ์ ํ์ ๋ ฌ ์คํ
1. ์ฌ์ฉ์๋ก๋ถํฐ 3~10 ์ฌ์ด์ ์ ์๋ฅผ ์ ๋ ฅ๋ฐ์
2. ์ ๋ ฅ๋ฐ์ ์ ์๋ฅผ ๋ฐฐ์ด์ ๊ธธ์ด๋ก ์ง์ ํ๊ณ ๋๋คํ ๊ฐ๋ค์ ๋ฐฐ์ด ์์ ๋์
3. ๋ฐฐ์ด ์์ ๋๋คํ ๊ฐ๋ค์ด ๋์ ๋๋ฉด ํด๋น ๋ฐฐ์ด ์ถ๋ ฅ
4. ๋๋คํ ์์์ ๋ฐฐ์ด์ ์ ํ์ ๋ ฌ์ ์ฌ์ฉํ์ฌ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
5. ์ ๋ ฌ๋ ๋ฐฐ์ด๋ค์ ์ถ๋ ฅ
#3 ์ ํ์ ๋ ฌ ํจ์ํ
1. ์ฌ์ฉ์๋ก๋ถํฐ ์ซ์๋ฅผ ์ ๋ ฅ๋ฐ์ ํจ์ ์์ฑ
2. ์ ๋ ฅ๋ฐ์ ์ซ์๋ก ๋ฐฐ์ด์ ์ ์ธํ๊ณ , ๋ฐฐ์ด ์์ ๋๋คํ ๊ฐ์ ๋์ ํด์ฃผ๋ ํจ์ ์์ฑ
3. ๋ฐฐ์ด์ ์ถ๋ ฅํด์ฃผ๋ ํจ์ ์์ฑ
4. ์ ํ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์์ผ์ฃผ๋ ํจ์ ์์ฑ
5. main ํจ์ ์คํ
// 1. ์ฌ์ฉ์๋ก๋ถํฐ ์ซ์ ๊ฐ์ ์
๋ ฅ ๋ฐ๋ ํจ์
public static int getNumber() {
Scanner scanner = new Scanner(System.in);
int n;
while (true) {
System.out.print("์ ๋ ฌํ ์ซ์์ ๊ฐ์๋ฅผ ์
๋ ฅํ์ธ์ (2 ์ด์): ");
n = scanner.nextInt();
if (n >= 3 && n <= 10) {
break; // ์ซ์๊ฐ 3 ์ด์, 10์ดํ๋ฅผ ์
๋ ฅํ๋ฉด while๋ฌธ์ ๋น ์ ธ๋๊ฐ
} else {
System.out.println("์ซ์๋ 2 ์ด์ 10์ดํ ํฉ๋๋ค. ๋ค์ ์
๋ ฅํด์ฃผ์ธ์.");
}
}
return n; // ์
๋ ฅ ๋ฐ์ ๊ฐ์ ๋ฐํ
}
// 2. 1๋ถํฐ 100 ์ฌ์ด์ ๋๋ค ์ซ์ ์์ฑํ๋ ํจ์
public static int[] RandomArray(int size) {
Random random = new Random();
int[] arr = new int[size];
for (int i = 0; i < size; i++) {
arr[i] = random.nextInt(100) + 1;
}
return arr; // ์ ์ฅ๋ ๋ฐฐ์ด์ ๋ฐํ
}
// 3. ๋ฐฐ์ด ์ถ๋ ฅ ํจ์
public static void printArray(int[] arr, String message) {
System.out.println(message);
for (int num : arr) {
System.out.print(num + " ");
}
System.out.println();
}
// 4. ์ ํ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ํจ์
public static void selectionSort(int[] arr) {
int n = arr.length;
// ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ๊ฐ๋ถํฐ ๋ง์ง๋ง ๊ฐ๊น์ง ๋ฐ๋ณต
for (int i = 0; i < n - 1; i++) {
int minIndex = i; // ํ์ฌ ์ธ๋ฑ์ค๋ฅผ ์ต์๊ฐ ์ธ๋ฑ์ค๋ก ์ค์
// ํ์ฌ ์ธ๋ฑ์ค ์ดํ์ ๋ฐฐ์ด์์ ์ต์๊ฐ์ ์ฐพ๊ธฐ ์ํ ๋ฐ๋ณต
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) { // ๋ ์์ ๊ฐ์ ์ฐพ์ผ๋ฉด
minIndex = j; // ์ต์๊ฐ ์ธ๋ฑ์ค๋ฅผ ์
๋ฐ์ดํธ
}
}
// ์ต์๊ฐ์ด ํ์ฌ ์์น์ ์์ง ์์ผ๋ฉด ๊ตํ
if (minIndex != i) {
int temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
}
// ๋ฉ์ธ ํจ์
public static void main(String[] args) {
// 1. ์ฌ์ฉ์ ์
๋ ฅ ๋ฐ๊ธฐ
int size = getNumber();
// 2. ๋๋ค ์ซ์ ์์ฑ
int[] arr = RandomArray(size);
// 3. ์์ฑ๋ ๋ฐฐ์ด ์ถ๋ ฅ
printArray(arr, "์์ฑ๋ ๋ฐฐ์ด:");
// 4. ์ ํ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์คํ
selectionSort(arr);
// 5. ์ ๋ ฌ ์๋ฃ๋ ๋ฐฐ์ด ์ถ๋ ฅ
printArray(arr, "์ ๋ ฌ ํ ๋ฐฐ์ด:");
}
#4 Feedback
1. class๋ฅผ ์ ์ธํ ๋ชจ๋ ์ด๋ฆ์ ์๋ฌธ์๋ก ์์
public static int[] RandomArray(int size){
public static int[] randomArray(int size){
2. ์ค์บ๋, ๋๋ค ๊ฐ์ด ๊ฐ์ฒด๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ ๊ฐ์ฒด๋ช ์ ์ง์ ํ ๋ ํ๋ค์์ ์์จ๋ ๊ด์ฐฎ๋ค
Scanner scanner = new Scanner(System.in);
Scanner sc = new Scanner(System.in);
3. ๋์๊ด๊ณ๋ฅผ ๋น๊ตํ ๊ฒฝ์ฐ, ์์์๋ฅผ ์ ค ์ผ์ชฝ์ผ๋ก, ์ ค ํฐ ์๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ณด๋ฉด ๊ฐ๋ ์ฑ์ด ์ข์์ง
if(n >= 3 && n <= 10){
if(3 <= n && n <= 10){
4. while๋ฌธ์ ์์ฑํ๋ฉด์ else๋ฌธ์ด ํ์์๋ค๋ฉด, ์๋ต์ ํ๋ ๊ฒ์ด ์ฝ๋์ depth๊ฐ ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ์ฑ์ด ์ข์์ง
while(true){
if(3<=n && n <= 10) {
break;
}
else {
System.out.println("์ซ์๋ 3์ด์ 10์ดํ ์ฌ์ด์ฌ์ผ ํฉ๋๋ค. ๋ค์ ์
๋ ฅํด์ฃผ์ธ์.");
}
}
// ==================================================================
while(true){
if(3<=n && n<=10){
break;
}
System.out.println("์ซ์๋ 3์ด์ 10์ดํ ์ฌ์ด์ฌ์ผ ํฉ๋๋ค. ๋ค์ ์
๋ ฅํด์ฃผ์ธ์.");
}
5. ๋ฐ๋ณต์ ํ์๋ฅผ ์์ for๋ฌธ์ ๋ฐ๋ณตํ ๋, ๋ฐ๋ณต์ ํ์๋ ๋ฐฐ์ด์ ๊ธธ์ด๋ก ์ง์ ํ๋ ๊ฒ์ด ์ข์
int[] arr = new int[size];
for (int i = 0; i < size; i++) {
arr[i] = random.nextInt(100) + 1; // 1๋ถํฐ 100 ์ฌ์ด์ ๋๋ค ์ซ์ ์์ฑ
}
// ====================================================================
int[] arr = new int[size];
for (int i = 0; i < arr.length; i++) {
arr[i] = random.nextInt(100) + 1; // 1๋ถํฐ 100 ์ฌ์ด์ ๋๋ค ์ซ์ ์์ฑ
}