1. 입력(숫자들, 오름/내림)
2. 정렬처리
swap()
3. 출력
주석 없앤 버전
int number[] = null;
boolean updown[] = new boolean[1]; // address 에 의한 할당
number = userInput(updown);
sorting(number, updown[0]);
// 결과
result(number, updown[0]);
// prototype
static int[] userInput(boolean ud[]) {//입력값 배열 리턴값 배열
Scanner sc = new Scanner(System.in);
// 정렬할 갯수?
System.out.print("정렬할 갯수는 = ");
int count = sc.nextInt();
// 정렬할 숫자를 동적할당
int number[] = new int[count];
// 정렬할 숫자를 입력
for (int i = 0; i < number.length; i++) {
System.out.print((i + 1) + "번째 수 = ");
number[i] = sc.nextInt();
}
// 오름(1)/내림(2)
System.out.print("오름(1)/내림(2) = ");
int updown = sc.nextInt();
ud[0] = (updown == 1)?true:false; //삼항연산자 사용
return number;
}
static void sorting(int number[], boolean updown) {
// 배열, 오름내림차순 입력
for (int i = 0; i < number.length - 1; i++) {
for (int j = i + 1; j < number.length; j++) {
if(updown) { // 오름
if(number[i] > number[j]) {
swap(number, i, j); //swap함수 호출
}
}else { // 내림
if(number[i] < number[j]) {
swap(number, i, j);
}
}
}
}
}
static void swap(int number[], int i, int j) {//swap할 배열, 인덱스 번호 순
int temp = number[i];
number[i] = number[j];
number[j] = temp;
}
static void result(int number[], boolean updown) {
String msg = "";
if(updown) msg = "오름";
else msg = "내림";
System.out.println(msg + "차순으로 정렬하였으며,");
for (int i = 0; i < number.length; i++) {
System.out.println(i + ":" + number[i]);
}
주석 추가한 버전
int number[] = null;
// int count;
boolean updown[] = new boolean[1]; // address 에 의한 할당
///////////////////////////////// 1. 입력
/*
// 정렬할 갯수?
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();
}
// 오름(1)/내림(2)
System.out.print("오름(1)/내림(2) = ");
int ud = sc.nextInt();
updown = (ud == 1)?true:false;
*/
number = userInput(updown);
//////////////////////////////////////// 2. 정렬
/*
int temp;
for (int i = 0; i < number.length - 1; i++) {
for (int j = i + 1; j < number.length; j++) {
if(updown) { // 오름
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;
}
}
}
}
*/
sorting(number, updown[0]);
// 결과
/*
String msg = "";
if(updown) msg = "오름";
else msg = "내림";
System.out.println(msg + "차순으로 정렬하였으며,");
for (int i = 0; i < number.length; i++) {
System.out.println(i + ":" + number[i]);
}*/
result(number, updown[0]);
}
// prototype
static int[] userInput(boolean ud[]) {
Scanner sc = new Scanner(System.in);
// 정렬할 갯수?
System.out.print("정렬할 갯수는 = ");
int count = sc.nextInt();
// 정렬할 숫자를 동적할당
int number[] = new int[count];
// 정렬할 숫자를 입력
for (int i = 0; i < number.length; i++) {
System.out.print((i + 1) + "번째 수 = ");
number[i] = sc.nextInt();
}
// 오름(1)/내림(2)
System.out.print("오름(1)/내림(2) = ");
int updown = sc.nextInt();
ud[0] = (updown == 1)?true:false;
return number;
}
static void sorting(int number[], boolean updown) {
// int temp;
for (int i = 0; i < number.length - 1; i++) {
for (int j = i + 1; j < number.length; j++) {
if(updown) { // 오름
if(number[i] > number[j]) {
/* temp = number[i];
number[i] = number[j];
number[j] = temp;*/
swap(number, i, j);
}
}else { // 내림
if(number[i] < number[j]) {
/* temp = number[i];
number[i] = number[j];
number[j] = temp; */
swap(number, i, j);
}
}
}
}
}
static void swap(int number[], int i, int j) {
int temp = number[i];
number[i] = number[j];
number[j] = temp;
}
static void result(int number[], boolean updown) {
String msg = "";
if(updown) msg = "오름";
else msg = "내림";
System.out.println(msg + "차순으로 정렬하였으며,");
for (int i = 0; i < number.length; i++) {
System.out.println(i + ":" + number[i]);
}
'JAVA > 기초 프로그래밍' 카테고리의 다른 글
파일//함수// 배열을 파일에 저장하기 (0) | 2020.05.29 |
---|---|
함수// 야구게임 (0) | 2020.05.28 |
함수// 입력받은 숫자 sorting swap (나) (0) | 2020.05.28 |
함수// 숫자로만 되어 있는지 체크 (0) | 2020.05.28 |
함수//배열 값 중에서 최대값 찾기 (0) | 2020.05.28 |