package k20231205;

import java.util.Arrays;
import java.util.Iterator;
public class StnTest {
public static void main(String[] args) {
// int[] data = { 4, 2, 5, 1, 3 };
int[] data = {1, 2, 3, 4, 5};
// 최대값을 기억할 기억장소는 아주 작은 값을, 최소값을 기억할 기억장소는 아주 큰 값을 초기치로 지정한다.

// int max = 0;
// int min = 100;
//
// for (int i = 0; i<data.length; i++) {
// if (data[i]>max) {
// max = data[i];
// }
// if (data[i]<min) {
// min = data[i];
// }
// }
// 최대값, 최소값을 기억할 기억장소를 각각 데이터가 저자오딘 배열의 0번째 인덱스 요소의 값을 초기치로 지정한다.
// int max = data[0];
// int min = data[0];
// // i가 1로 시작하는 이유는 최대값과 최소값을 기억할 변수에 배열을 0번째 인덱스의 값을 초기치로 지정했고
// // 자기 자신과 비교해봐야 최대값과 최소값을 판단하는데 전혀 도움이 되지 않기 때문이다.
// for (int i = 1; i < data.length; i++) {
// if (data[i] > max) {
// max = data[i];
// } else if (data[i] < min) {
// min = data[i];
// }
// }
//
// System.out.printf("최대값: %d, 최소값: %d\n", max, min);
//
// // 전체 데이터의 합계를 계산한 후 최대값과 최소값을 뺀 합계와 평균을 계산한다,
//
// int sum = 0;
// for (int i = 0; i < data.length; i++) {
// sum += data[i];
// }
// sum -= max + min;
// double avg = (double) sum / (data.length - 2);
// System.out.printf("최소값과 최대값을 제외한 합계: %d\n최소값과 최대값을 제외한 평균: %.3f\n", sum, avg);
// 오름차순 정렬하면 0번째 인덱스의 값이 최소값, n-1번째 인덱스의 값이 최대값이 된다.
// 내림차순 정렬하면 0번째 인덱스의 값이 최대값, n-1번째 인덱스의 값이 최소값이 된다.
for (int i = 0; i < data.length - 1; i++) {
for (int j = 0; j < data.length - 1 - i; j++) {
if (data[j] > data[j + 1]) {
int temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
// Arrays.sort(data);
System.out.println(i + 1 + "회전 결과: " + Arrays.toString(data));
}
System.out.println("================================");
System.out.println("정렬 결과: " + Arrays.toString(data));
// 전체 데이터에서 최대값과 최소값을 제외한 합계와 평균을 계산한다.
int sum = 0;
for (int i = 1; i<data.length-1; i++) {
sum += data[i];
}
double avg = (double) sum / (data.length -2);
System.out.printf("최소값과 최대값을 제외한 합계: %d\n최소값과 최대값을 제외한 평균: %.3f\n", sum, avg);
// 분산(편차제곱의 평균)과 표준편차(루트분산)를 계산한다
double stn = 0.0;
for (int i = 1; i<data.length-1; i++) {
double temp = data[i] - avg; // 최대값과 최소값을 제외한 각 데이터 편차를 계산한다.
// stn += temp * temp; // 최대값과 최소값을 제외한 각 데이터 편차의 제곱의 합계를 계산한다.
stn += Math.pow(temp, 2); //제곱계산 메소드 활용
}
System.out.println(stn);
double var = stn / (data.length -2);
System.out.printf("최대값과 최소값을 제외한 분산: %7.5f\n" , var);
double std = Math.sqrt(var);
// double std = Math.sqrt(var,0.5);
System.out.printf("최대값과 최소값을 제외한 표준편차: %7.5f\n" , std);
}
}
'java&eclipse 코딩 알고리즘 > 20231205' 카테고리의 다른 글
| WhileTest (0) | 2023.12.14 |
|---|---|
| MenuTest2 (0) | 2023.12.14 |
| MenuTest (0) | 2023.12.14 |
| EuclideanAlgorithm2 (0) | 2023.12.14 |
| EuclideanAlgorithm (0) | 2023.12.14 |