JAVA/java 예시

[JAVA] 배열 섞기(랜덤) / 섞인 배열 정리(오름차순, 내림차순)

congs 2023. 3. 26. 00:10

1. 배열 섞기

//배열을 섞는 코드 : random이용
//실 데이터를 덮어쓰기 전, 데이터를 유지하기 위해 임시 번지 사용
//방법 : 랜덤한 번지(0~arr.length)를 선택해서 다른 번지와 교환
	
int min = 0;//시작번지
int max = arr.length; //10개 (배열의 길이)
int random = 0;
	
	
//배열 섞기
for (int i=0; i<arr.length; i++) { // 첫번째 교환 대상
	random = (int)(Math.random()*max)+min;
	int tmp = arr[i]; // 0번지의 값이 tmp로 이동
	arr[i] = arr[random]; // 랜덤 번지값이 0번지로 이동
	arr[random] = tmp; // 랜덤 번지에 0번지의 값 이동 // 교환완료
}
	
System.out.println("----섞은 후----");
	
for(int i=0; i<arr.length; i++) {
	System.out.print(arr[i]+" ");
}

2. 섞인 배열 정리 (오름차순: 작은 수 부터)

//1. 오름차순 
//1번지 수와 0번지 수 비교 -> 0번지 수가 마지막 번지까지 순서대로 비교 (pass1) : 반복
	
for (int i=0; i<arr.length-1; i++) { //0~9번지 중 8번지까지 
	for (int j=i+1; j<arr.length; j++) { //0~9번지 중 9번지까지
		if( arr[i] > arr[j]) { //내림차순은 arr[i] < arr [j]
			int tmp = arr[i];
			arr[i] = arr[j];
			arr[j] = tmp;
		}
	}
	
}
	
System.out.println("----오름차순 정렬 후----");
for(int i=0; i<arr.length; i++) {
	System.out.print(arr[i]+ " ");
}

3. 섞인 배열 정리(내림차순: 큰 수 부터)

for (int i=0; i<arr.length-1; i++) {
	for(int j=i+1; j<arr.length; j++) {
		if( arr[i] < arr[j] ) {
			int tmp = arr[i];
			arr[i] = arr[j];
			arr[j] = tmp;
		}
	}
}
	
System.out.println("----내림차순 정렬 후----");
for (int i=0; i<arr.length; i++) {
	System.out.print(arr[i]+ " ");
}

4. 배열을 섞고 다시 오름차순으로 정리

for (int i=0; i<arr.length; i++) {
	arr[i] = (int)(Math.random()*45)+1;
	System.out.print(arr[i]+" ");
}	

for(int j=0; j<arr.length-1; j++) {
	for (int k=j+1; k<arr.length; k++) {
		if(arr[j] > arr[k]) {
			int tmp = arr[j];
			arr[j] = arr[k];
			arr[k] = tmp;
		}
	}
}
	
	
	
System.out.println( );
System.out.println("섞고 정렬하면,");
for (int i=0; i<arr.length; i++) {
	System.out.print(arr[i]+ " ");
}