1. 정수 10개짜리 nums배열을 생성한다. 

		int[] nums = {1,2,3,4,5,6,7,8,9,10};

 

2. 랜덤값 두개를 뽑아서 100번 섞는다.

정수 두개 변수선언을하고 각각 랜덤함수를 적용해준다.

잘 섞였는지 출력해서 확인

		Random rand = new Random();
		
		for(int i=0;i<100;i++) {
			int idx1 = rand.nextInt(10); //0~9
			int idx2 = rand.nextInt(10); //0~9
			System.out.printf("idx1: %d, idx2:%d\n",idx1,idx2);

 

3. 랜덤으로 뽑은 두 인덱스를 섞는다. (섞기연습)

			int temp;
			temp = nums[idx1];
			nums[idx1] = nums[idx2];
			nums[idx2] = temp;		
			

 

4. 버블정렬을 위해 제일 큰 값을 찾는다.

n번째값보다 n+1번째 값이 크다면 서로 위치를 바꾼다.(if문)

가장 큰값이 마지막에온다.

0번째값이 1번쨰값보다 크다면 두 위치를 값을 바꾼다.

1번쨰값이 2번째값보다 크다면 두 위치의 값을 바꾼다. ~ 8번째값이 9번째값보다 크다면 두 위치의 값을 바꾼다.

		for(int i=0;i<9;i++) // 범위주의 (인덱스갯수-1 : 인덱스가4개일경우 3번이면 모두비교됨)
			if(nums[i]>nums[i+1]) {
				int temp;
				temp = nums[i];
				nums[i] = nums[i+1];
				nums[i+1] = temp;
			}

 

5. 버블정렬로 오름차순(이중 for문)

0,1,2,3,4,5,6,7,8,9의 10개의 수가 섞여있는 배열을 오름차순으로 정렬하기위해서

각 수를 두개씩 묶어서 비교하면 9번만 검사하게된다. (안쪽 for문)

이 반복을 또 9번해야 전체적으로 정렬이된다.(바깥 for문)

 

바깥for (int j=0;j<9-1;j++) : 전체범위 , 9번 반복

안쪽for ( int i=0;i<10-i-1;i++) : 바깥for문이 한번돌면 가장큰 숫자는 맨 오른쪽에위치한다. 확정된 것은 더이상 비교할필요없다.

		for(int j=0;j<10-1;j++) 
			for(int i=0;i<10-1-j;i++) 
				if(nums[i]>nums[i+1]){
				int temp;
					temp = nums[i];
					nums[i] = nums[i+1];
					nums[i+1] = temp;
				}

큰for문의 j가 작은for문안에서 쓰여서 

for(int i=0;i<10-1;i++) : 제일큰 것 찾기, 나머지애들끼리 값을 비교

for(int i=0;i<9-1;i++) : 두번쨰로 큰 것 찾기

for(int i=0;i<8-1;i++) , ... 로 점차좁혀진다. 

for문 범위 변화에 따른 결과값

 

콘솔출력

6. ',' 쉼표찍기

인덱스가 10개이지만 쉼표는 마지막에 빠져야한다. (즉, 9번만 발생)

if문을 사용해서 9번째까지만 찍도록 for문안에 중첩한다. 

for문을 이용해 nums[i]의 값을 순서대로 출력하되, i가 9보다 작다면 ','를 출력한다.

		for(int i=0;i<10;i++) {
			System.out.print(nums[i]);
			
			if(i<9)
				System.out.print(",");
			}

 

5. 전체 오름차순으로 버블정렬

package ex3.array.test2;

import java.util.Random;

public class practice {

	public static void main(String[] args) {
		
		//1.정수 10개짜리 nums배열을 생성한다. 단, 1,2,3,4~10

		int[] nums = {1,2,3,4,5,6,7,8,9,10};
		
		//섞는다.
		//랜덤값을 얻어서
		Random rand = new Random();
		
		for(int i=0;i<100;i++) {
			int idx1 = rand.nextInt(10); //0~9
			int idx2 = rand.nextInt(10); //0~9
			System.out.printf("idx1: %d, idx2:%d\n",idx1,idx2);
			
		//두 인덱스의 위치를 바꿔라.		
			int temp;
			temp = nums[idx1];
			nums[idx1] = nums[idx2];
			nums[idx2] = temp;		
			}
		for(int i=0;i<10;i++) {
			System.out.print(nums[i]);
			
			if(i<9)
				System.out.print(",");
			}System.out.println();
		
		
		//버블정렬 제일큰 값을 찾아서 맨 뒤로 밀어내기
		//배열에서 가장 큰 값찾기		
	    // 범위주의 (인덱스갯수-1 : 인덱스가4개일경우 3번이면 모두비교됨)
		for(int j=0;j<10;j++) {
			for(int i=0;i<(10-j)-1;i++) 
				if(nums[i]>nums[i+1]){
				int temp;
					temp = nums[i];
					nums[i] = nums[i+1];
					nums[i+1] = temp;
				}
		}
				
		
		for(int i=0;i<10;i++) {
			System.out.print(nums[i]);
			
			if(i<9)
				System.out.print(",");
			}
			System.out.println();
		
	}
}

 

+ Recent posts