Sort

ZiSoOm·2021년 5월 29일
0

기초자바

목록 보기
9/15

📍선택 정렬

가장 작은 숫자를 찾아서 앞으로 보내는 방식

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));

//선택 정렬
/*
* i, j
* 0,1  0,2  0,3  0,4  0,5  0,6  0,7  0,8  0,9
* 1,2  1,3  1,4  1,5  1,6  1,7  1,8  1,9
* 2,3  2,4  2,5  2,6  2,7  2,8  2,9
* 3,4  3,5  3,6  3,7  3,8  3,9 
* 4,5  4,6  4,7  4,8  4,9
* 5,6  5,7  5,8  5,9
* 6,7  6,8  6,9
* 7,8  7,9
* 8,9
*/
for(int i =0; i < arr.length-1; i++) { //9는 비교할 숫자가 없으니까 8까지만 함
	int min = i;
	for(int j= i+1; j <arr.length; j++) {
		if(arr[min] > arr[j]) {
			min = j;
		}
	}
	int tmp = arr[i]; //i가 0일때 0자리에 제일 작은 숫자 넣기 위함
	arr[i] = arr[min];
	arr[min] = tmp;
}
System.err.println(Arrays.toString(arr));

📍버블 정렬

바로 뒤의 숫자와 비교해서 큰 수를 뒤로 보내는 방식

for(int i= 0; i < arr.length - 1; i++) {
	boolean flag = true;
	for(int j= 0; j < arr.length -1 - i; j++) {
		if(arr[j] > arr[j+1]){ //앞의 숫자가 더크면 뒤로 옮겨줌
			int tmp = arr[j];
			arr[j] = arr[j+1];
			arr[j+1] = tmp;
			flag = false; //더이상 옮겨 줄게 없으면 flag가 true가 됨
		}
	}
	if(flag) {
		break;
	}
}
System.out.println(Arrays.toString(arr));

📍삽입 정렬

두번째 숫자부터 앞의 숫자들과 비교해서 큰 수를 뒤로 밀고 중간에 삽입하는 방식

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));

for (int i = 1; i < arr.length; i++) {
	int tmp = arr[i];
	int j;
	for (j = i - 1; j >= 0; j--) {
		if (tmp < arr[j]) { //앞의 숫자가 더 크면
			arr[j + 1] = arr[j]; //뒷자리를 앞의 자리의 숫자가 사용하게 됨
			
		} else { //앞의 숫자가 더 작으면
			break; //나감
		}
	}
	arr[j + 1] = tmp; //ex) 첫 j for문이 다돌고나면 j가 -1이됨
	// arr[0]자리에 작은 숫자를 넣어줌
}
System.out.println(Arrays.toString(arr));

📍석차 구하기

//석차 구하기
int [] rank = new int[arr.length]; //등수
for(int i=0; i<rank.length; i++) {
	rank[i] = 1; //1등부터 시작
}
for(int i=0; i <rank.length; i++) {
	for(int j=0; j <rank.length; j++) {
		if(arr[i] < arr[j]) { //점수가 높으면 등수가 낮음
			rank[i]++;
		}
	}
}
for(int i=0; i < rank.length; i++) {
	System.out.println(arr[i] + " : " + rank[i] + "등입니다.");
}

0개의 댓글

관련 채용 정보