CODE/JAVA1
Sort
maskan
2021. 1. 27. 15:51
import java.util.Arrays;
public class Sort {
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(Arrays.toString(arr));
// 선택정렬
/*제출
int min;
for (int i = 0; i < arr.length - 1; i++) {
min = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[min] > arr[j]) {
min = j;
}
}
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
System.out.println("선택정렬" + Arrays.toString(arr));
*/
/*답안*/
// min = 0;
//
// for (int i = 0; i < arr.length - 1; i++) {
// min = i;
// for (int j = i + 1; j < arr.length; j++) {
// if (arr[j] < arr[min]) {
// min = j;
// }
// }
// int temp = arr[i];
// arr[i] = arr[min];
// arr[min] = temp;
// }
// System.out.println("선택정렬" + Arrays.toString(arr));
/*오답
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
*/
//석차구하기
/*답안*/
int[] rank = new int[arr.length];
for (int i = 0; i < rank.length; i++) {
rank[i] = 1;
} // array 안의 모든 값을 1로 설정
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
if (arr[i] < arr[j]) { // 비교해서 점수가 작은 사람의 등수를 증가시킴
rank[i]++;
}
}
}
System.out.println(Arrays.toString(rank));
// 버블정렬
/*ERROR
int len = arr.length;
for (int i = 0; i < len - 1; len--) {
for (int j = i + 1; j < len; i++) {
if (arr[i] > arr[j]) {
int max = arr[i];
arr[i] = arr[j];
arr[j] = max;
}
}
}
System.out.println(Arrays.toString(arr));
*/
//버블 정렬 + 자리 변화가 없으면 변경을 끝냄
/*제출*/
for (int i = arr.length - 1; i >= 0; i--) {
for (int j = 0; j < i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
System.out.println("버블정렬" + Arrays.toString(arr));
/* 답안 */
for (int i = 0; i < arr.length - 1; i++) {
boolean flag = false;
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j + 1];
arr[j + 1] = temp;
flag = true;
}
}
if (!flag) { // flag가 false라면
break;
}
}
System.out.println("버블정렬" + Arrays.toString(arr));
//삽입정렬
//두번째 숫자를 변수에 저장한다.
//앞의 숫자와 비교해서 큰 수를 만나면 큰 수를 한 칸 뒤로 보낸다.
//작은 수를 만나면 작은 수의 바로 뒷칸에 변수의 값을 저장하고 반복문을 빠져나간다.
/*제출*/
for (int i = 0; i <arr.length; i++) {
for (int j = 1; j < arr.length; j++) {
if (arr[j] < arr[j- 1]) {
int temp = arr[j];
arr[j]= arr[j - 1];
arr[j-1] = temp;
}
}
}System.out.println("삽입정렬" + Arrays.toString(arr));
/*답안*/
for(int i = 1; i <arr.length; i++){
int temp = arr[i];
int j = 0;
for( j = i-1; j>=0; j--){
if(temp < arr[j]){
arr[j+1] = arr[j];
} else {
break;
}
}
arr[j + 1] = temp;
}
System.out.println(Arrays.toString(arr));
}
}