불로구
[ 자바 알고리즘/자료구조] - 자바 난수배열 && 배열 역순 정렬 본문
이번에는 배열을 랜덤값(난수)를 만들어 대입시켜보자.
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감소 시킨다.
'프로그래밍 > 알고리즘' 카테고리의 다른 글
[ 자바 알고리즘/자료구조] - 자바 10진수 변환 (2진수 ~ N진수) (0) | 2021.02.08 |
---|---|
[ 자바 알고리즘/자료구조] - 자바 배열 비교 (0) | 2021.02.08 |
[ 자바 알고리즘/자료구조] - 자바 배열 복사 && 배열의 최대값 (0) | 2021.02.07 |
[ 자바 알고리즘/자료구조] - 반복(1부터 n까지 합) && i++과 ++i (0) | 2021.02.07 |
알고리즘 - 퀵 정렬 (0) | 2020.06.15 |