Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

Everything has an expiration date

107 - Java 정렬(Sort) : 선택 정렬(Selection Sort)을 통해 정수 배열의 요소들을 오름차순으로 정렬 본문

[Java]/Program source (java)

107 - Java 정렬(Sort) : 선택 정렬(Selection Sort)을 통해 정수 배열의 요소들을 오름차순으로 정렬

Jelly-fish 2023. 9. 12. 12:45
/*=======================================
	■■■ 정렬(Sort) 알고리즘 ■■■	
=========================================*/


/*
○ 정렬
   : 데이터를 특정한 규칙(기준)에 맞게 순서대로 나열(오름차순, 내림차순)


○ 정렬의 목적
   : 데이터 처리 과정의 편의성이나 가독성을 높이기 위함
    → 보기 좋게... 찾기 좋게... 검색이 편하게... 


○ 정렬의 종류
   : 선택 정렬, 삽입 정렬, 버블 정렬, 힙 정렬, 퀵 정렬, 쉘 정렬, ...


*/


// 선택 정렬(Selection Sort)


// 실행 예)
// Source Data : 52 42 12 62 60
// Sorted Data : 12 42 52 60 62
// 계속하려면 아무 키나 누르세요...

public class Test107
{
	public static void main(String[] args)
	{
		int[] a = {52, 42, 12, 62, 60};
		/*
		42, 52, 12, 62, 60
		==  --


		12, 52, 42, 62, 60
		==      --


		12, 52, 42, 62, 60
		==          --


		12, 52, 42, 62, 60
		==              --
		
		-------------------------------------1회전(웅~)

		12, 42, 52, 62, 60
		    ==  --


		12, 42, 52, 62, 60
		    ==      --


		12, 42, 52, 62, 60
		    ==          --


		-------------------------------------2회전(웅~)


		12, 42, 52, 62, 60
		        ==  --
		

		12, 42, 52, 62, 60
		        ==      --

		-------------------------------------3회전(웅~)

		
		12, 42, 52, 60, 62
		            ==  --

		-------------------------------------4회전(웅~)


		



		
		*/
		

		int i, j;

		System.out.print("Source Data : ");
		
		/*
		for (i = 0; i < a.length; i++)
		{
			System.out.print(a[i] + " ");
		}
		System.out.println();
		//--==>> Source Data : 52 42 12 62 60
		*/



		
		// 향상된 for문(foreach 구문)
		
		for (int n : a)
		{
			System.out.print(n + " ");
		}
		System.out.println();
		
		//--==>> Source Data : 52 42 12 62 60

		// 정렬
		// → Selection Sort
		for (i = 0; i < a.length-1; i++)		// 웅~~~~~ → 비교기준 데이터 (0    1    2    3)
		{                                       //                             |    |    |    |
			for (j = i+1; j < a.length; j++)	// 쑝쑝쑝  → 비교대상 데이터 (1234 234  34   4)
			{
				// 크기 비교
				//if (a[i] < a[j])				// 내림차순 정렬
				if (a[i] > a[j])				// 오름차순 정렬
				{
					// 자리 바꾸기
					
					a[i] = a[i]^a[j];
					a[j] = a[j]^a[i];
					a[i] = a[i]^a[j];
				}
			}
		}








		// 결과 출력
		System.out.print("Sorted Data : ");
		/*
		for (i = 0; i < a.length; i++)
		{
			System.out.print(a[i] + " ");
		}
		System.out.println();
		*/

		for (int n : a)
		{
			System.out.print(n + " ");
		}
		System.out.println();
		//--==>> Sorted Data : 12 42 52 60 62

	}
}

// 실행 결과

/*
Source Data : 52 42 12 62 60
Sorted Data : 12 42 52 60 62
계속하려면 아무 키나 누르십시오 . . .
*/





		/*[내가 한 풀이]=========================
		int temp;

		for (int i = 0; i < (a.length - 1); i++)
		{
			for (int j = i+1; j < a.length; j++)
			{
				
				if (a[i] > a[j])
				{
					temp = a[j];
					a[j] = a[i];
					a[i] = temp;
					System.out.print("자리바꿈 발생 : ");
					System.out.print("a[" + i + "]" + ", a[" + j + "]\n");
					
				}
			}
		}

		for (int i = 0; i < a.length; i++)
		{
			System.out.printf("%4d", a[i]);
		}
		System.out.println();
		
		
	}
}
*/