불로구

[ 자바 알고리즘/자료구조] - 자바 난수배열 && 배열 역순 정렬 본문

프로그래밍/알고리즘

[ 자바 알고리즘/자료구조] - 자바 난수배열 && 배열 역순 정렬

맹이맹이 2021. 2. 7. 23:53
반응형

이번에는 배열을 랜덤값(난수)를 만들어 대입시켜보자.

class MaxOfArrayRand{
	static int maxOf(int[] arr){
		int max = arr[0];
		for(int i=1; i<arr.length; i++){
			if(arr[i] > max){
				max = arr[i];
			}
		}
		return max;
	}
}

public class 난수배열 {
	public static void main(String[] args){
		int[] arr = new int[10];
		for(int i=0; i<arr.length; i++){
			arr[i] = (int)(Math.random()*100) + 1;
			System.out.println(i + "번 = " + arr[i]);
		}
		System.out.println(MaxOfArrayRand.maxOf(arr));
	}
}

우선 난수배열 class부터 확인하자.

- arr이라는 크기가 10인 배열을 선언한다.

- 반복문을 통해 0~배열사이즈-1 만큼 돌아가며 배열에 i인덱스에 1~100까지 랜덤값을 넣어준다.

   ( 앞에 왜 int 형변환을 했을까? -> 랜덤 함수는 실수로 나타나기 때문에 정수를 원한다면 int로 형변환을 시켜주자 )

- 출력문을 보면 MaxOfArrayRand 클래스의 maxOf함수를 호출하여 리턴값을 출력한것을 알 수 있다.

 

그럼 이번에는 MaxOfArrayRand 클래스를 살펴보자

- max라는 배열에 파라피터로 받은 arr배열의 0번째 요소를 대입시켜준다.

- for문을 통해 arr의 첫번째 요소부터 arr의 길이보다 작을 때 까지 반복을 돌려준다.

- 반복문 안에서 조건물을 통해 arr의 i인덱스가 max 보다 그면 max에 arr[i]를 대입시켜준다.

- max값을 반환단다.

 

 

그럼 이번에는 배열의 역순 정렬을 알아보자.

// 교환횟수 = 요소개수 / 2
public class 배열역순정렬 {
	public static void main(String[] args){
		int[] arr = {5,2,63,12,56,19,34,81,93,30};
		int start = 0;
		int end = arr.length - 1;
		for(int i=0; i<arr.length / 2; i++){
			int tmp = arr[start];
			arr[start] = arr[end];
			arr[end] = tmp;
			if(start <= end){
				start++;
				end--;
			}
		}
		System.out.println(Arrays.toString(arr));
	}
}

이번에는 arr이란 배열에 값을 넣어주었다.

배열의 역순 정렬을 요소의 개수 / 2만큼 동작을 한다.

 

- start 라는 변수는 arr배열의 시작점이다. 즉, 0번째 인덱스를 가리키기 때문에 0으로 초기화

- end 라는 변수는 arr배열의 마지막점이다. 즉 arr배열의 -1 인덱스인 30을 가리키기 위한 변수

- for문을 통해 0부터 배열길이/2 만큼 반복시켜준다.

- tmp라는 임시로 값을 넣어줄 임시변수를 선한하고, start가 가리키는 arr인덱스의 값을 넣어준다.

- 그리고 arr[start]는 arr의 end가 가리키는 값을 대입하고

- arr[end]는 tmp가 임시로 가진 값을 대입시킨다.

- if문을 통해 start가 end보다 크다면 cross가 된 것이기때문에 유효성 검사를 해준다.

- start는 0번째 인덱스의 값을 바꾸었기 때문에 1증가시키고

- end는 마지막 인덱스의 값을 바꾸었기 때문에 1감소 시킨다.

반응형
Comments