[Java]/Program source (java)

108 - Java 정렬(Sort) : 버블 정렬(Bubble Sort)을 통해 정수 배열의 요소 값 오름차순 정렬

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


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


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


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


*/


// 버블 정렬(거품 정렬, Bubble Sort)


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







public class Test108
{
	public static void main(String[] args)
	{
		int[] a = {52, 42, 12, 62, 60};
		int count = 0;
		
		int i, j;

		System.out.print("Source Data : ");
		for (int n : a)
		{
			System.out.print(n + " ");
		}
		System.out.println();


		// 정렬
		// → Bubble Sort
		for (i = 1; i < a.length; i++)			// 웅~~~  i → 뒤에서 비교 대상을 하나씩 줄여주는 역할
		{                                       //             1    2   3  4
			for (j = 0; j < a.length - i; j++)	// 쑝쑝쑝 j → 비교기준 인덱스
			{                                   //             0123 012 01 0
				
				//if (a[j] < a[j+1])			// 내림차순
				if (a[j] > a[j+1])				// 오름차순
				{
					// 자리바꿈
					a[j]   = a[j]   ^ a[j+1];
					a[j+1] = a[j+1] ^ a[j];
					a[j]   = a[j]   ^ a[j+1];
				}
			}
		}






		System.out.print("Sorted Data : ");
		for (int n : a)
		{
			System.out.print(n + " ");
		}
		System.out.println();


	}
}

// 실행 결과

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

		/*[내가 한 풀이]==========================================
		for (int n = 1; n < 5; n++)
		{
			for (int i = 0, j = 1; i < a.length - n ; i++) //(j = i + 1)
			{
				System.out.print("a[" + i + "]" + "a[" + j + "]\n");
				
				if (a[i] > a[j])
				{
					a[i] = a[i] ^ a[j];
					a[j] = a[j] ^ a[i];
					a[i] = a[i] ^ a[j];

					
				}
				j++;


			}

		}
		

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

	}
}
		
	/*
		42, 52, 12, 62, 60
		==  --


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


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


		42, 12, 52, 60, 62		>> 맨 뒤 62가 fix! (선택적 배열은 맨 앞이 fix!)
		            ==  --

		-------------------------------- 1회전
		

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


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


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


		-------------------------------- 2회전


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

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


		-------------------------------- 3회전


		12, 42, 52, 60, 62
		==  --
		
		-------------------------------- 4회전




		



		*/