* 정렬 Sorting
- 데이터가 마구잡이로 나열되어있을 때 순서대로 정렬
- 맨 앞 숫자를 그 다음 숫자부터 끝까지 비교하면서 자리를 옮겨줌
- 선택, 삽입, 버블, 합병, 퀵(알고리즘)
* 예시
3, 5, 1, 4, 2를 정렬하라
int number[] = {3, 5, 1, 4, 2};
int temp;
for (int i = 0; i < number.length - 1; i++) { // 첫번째 자리 비교, 마지막자리는 비교하지 않아도 됨
for(int j = i + 1; j < number.length; j++) { // 그 다음 자리 비교 (i는 0번째, j는 1번째부터)
if(number[i] > number[j]) { // 교환처리(swap) , 오름차순 정렬로(<, 내림차순)
temp = number[i];
number[i] = number[j];
number[j] = temp;
}
}
}
System.out.println(Arrays.toString(number));
* 예제
* 정렬프로그램 만들기
- user 몇개의 숫자를 정렬할지 입력받기
- 개수를 결정
- 숫자들을 입력받기
- 오름차순/내림차순 골라라
- 정렬처리
- 결과 출력
Scanner sc = new Scanner(System.in);
// 변수 선언, 배열은 초기화까지 했음
int count; // 몇개를 정렬할지의 변수
int number[] = null; // 결정된 것이 없어서 null
int updown;
// 입력
// user 몇개의 숫자를 정렬?
// 개수를 결정
System.out.print("몇개의 숫자를 정렬하시겠습니까?");
count = sc.nextInt();
number = new int[count];
// 숫자들을 입력
for (int i = 0; i < number.length; i++) {
System.out.print((i+1) + "번째 수 = ");
number[i] = sc.nextInt();
}
// 오름차순/내림차순 골라라
System.out.print("오름(1)/내림(2) = ");
updown = sc.nextInt();
// 정렬처리 (swap)
int temp; // 변수 선언 밑에다가 적어도 됨
for (int i = 0; i < number.length - 1; i++) {
System.out.println("i = " + i); // 실행해보기
for (int j = i + 1; j < number.length; j++) {
System.out.println("\tj = " + j); // 실행해보기
if(updown == 1) { // 오름차순
if(number[i] > number[j]) {
temp = number[i];
number[i] = number[j];
number[j] = temp;
}
}
else { // 내림차순
if(number[i] < number[j]) {
temp = number[i];
number[i] = number[j];
number[j] = temp;
}
}
}
}
// 결과 출력
System.out.println(Arrays.toString(number));
댓글