1. {2, 3, 1} → {1, 2, 3}
package algo;
public class ChangeData3Me1 {
public static void main(String[] args) {
// Sort 정렬 (오름차순 1,2,3)
int[] arr = {2,3,1};
int temp;
// 0번지, 1번지 비교 -> 참 -> 스왑 {2,3,1}
if (arr[0] > arr[1]) {
temp = arr[1];
arr[1] = arr[0];
arr[0] = temp;
}
// 1번지, 2번지 비교 -> 참 -> 스왑 {2,1,3}
if (arr[1] > arr[2]) {
temp = arr[2];
arr[2] = arr[1];
arr[1] = temp;
}
// 0번지, 1번지 비교 -> 참 -> 스왑 {1,2,3}
if (arr[0] > arr[1]) {
temp = arr[1];
arr[1] = arr[0];
arr[0] = temp;
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
}
2. {7, 4, 2, 3, 1, 5, 6} → {1, 2, 3, 4, 5, 6, 7}
1) 노가다
package algo;
public class ChangeData3Me2 {
public static void main(String[] args) {
int[] arr = {7,4,2,3,1,5,6};
int temp;
// 0,1 비교 -> 참 -> 스왑 {4,7,2,3,1,5,6} 1회차-1
if (arr[0] > arr[1]){
temp = arr[1];
arr[1] = arr[0];
arr[0] = temp;
}
// 1,2 비교 -> 참 -> 스왑 {4,2,7,3,1,5,6} 1회차-2
if (arr[1] > arr[2]){
temp = arr[2];
arr[2] = arr[1];
arr[1] = temp;
}
// 2,3 비교 -> 참 -> 스왑 {4,2,3,7,1,5,6} 1회차-3
if (arr[2] > arr[3]){
temp = arr[3];
arr[3] = arr[2];
arr[2] = temp;
}
// 3,4 비교 -> 참 -> 스왑 {4,2,3,1,7,5,6} 1회차-4
if (arr[3] > arr[4]){
temp = arr[4];
arr[4] = arr[3];
arr[3] = temp;
}
// 4,5 비교 -> 참 -> 스왑 {4,2,3,1,5,7,6} 1회차-5
if (arr[4] > arr[5]){
temp = arr[5];
arr[5] = arr[4];
arr[4] = temp;
}
// 5,6 비교 -> 참 -> 스왑 {4,2,3,1,5,6,7} 1회차-6
if (arr[5] > arr[6]){
temp = arr[6];
arr[6] = arr[5];
arr[5] = temp;
}
// 0,1 비교 -> 참 -> 스왑 {2,4,3,1,5,6,7} 2회차-1
if (arr[0] > arr[1]){
temp = arr[1];
arr[1] = arr[0];
arr[0] = temp;
}
// 1,2 비교 -> 참 -> 스왑 {2,3,4,1,5,6,7} 2회차-2
if (arr[1] > arr[2]){
temp = arr[2];
arr[2] = arr[1];
arr[1] = temp;
}
// 2,3 비교 -> 참 -> 스왑 {2,3,1,4,5,6,7} 2회차-3
if (arr[2] > arr[3]){
temp = arr[3];
arr[3] = arr[2];
arr[2] = temp;
}
// 3,4 비교 -> 참 -> 스왑 {2,3,1,4,5,6,7} 2회차-4
if (arr[3] > arr[4]){
temp = arr[4];
arr[4] = arr[3];
arr[3] = temp;
}
// 4,5 비교 -> 참 -> 스왑 {2,3,1,4,5,6,7} 2회차-5
if (arr[4] > arr[5]){
temp = arr[5];
arr[5] = arr[4];
arr[4] = temp;
}
// 5,6 비교 -> 참 -> 스왑 {2,3,1,4,5,6,7} 2회차-6
if (arr[5] > arr[6]){
temp = arr[6];
arr[6] = arr[5];
arr[5] = temp;
}
// 0,1 비교 -> 참 -> 스왑 {2,3,1,4,5,6,7} 3회차-1
if (arr[0] > arr[1]){
temp = arr[1];
arr[1] = arr[0];
arr[0] = temp;
}
// 1,2 비교 -> 참 -> 스왑 {2,1,3,4,5,6,7} 3회차-2
if (arr[1] > arr[2]){
temp = arr[2];
arr[2] = arr[1];
arr[1] = temp;
}
// 2,3 비교 -> 참 -> 스왑 {2,1,3,4,5,6,7} 3회차-3
if (arr[2] > arr[3]){
temp = arr[3];
arr[3] = arr[2];
arr[2] = temp;
}
// 3,4 비교 -> 참 -> 스왑 {2,1,3,4,5,6,7} 3회차-4
if (arr[3] > arr[4]){
temp = arr[4];
arr[4] = arr[3];
arr[3] = temp;
}
// 4,5 비교 -> 참 -> 스왑 {2,1,3,4,5,6,7} 3회차-5
if (arr[4] > arr[5]){
temp = arr[5];
arr[5] = arr[4];
arr[4] = temp;
}
// 5,6 비교 -> 참 -> 스왑 {2,1,3,4,5,6,7} 3회차-6
if (arr[5] > arr[6]){
temp = arr[6];
arr[6] = arr[5];
arr[5] = temp;
}
// 0,1 비교 -> 참 -> 스왑 {1,2,3,4,5,6,7} 4회차-1
if (arr[0] > arr[1]){
temp = arr[1];
arr[1] = arr[0];
arr[0] = temp;
}
// 1,2 비교 -> 참 -> 스왑 {1,2,3,4,5,6,7} 4회차-2
if (arr[1] > arr[2]){
temp = arr[2];
arr[2] = arr[1];
arr[1] = temp;
}
// 2,3 비교 -> 참 -> 스왑 {1,2,3,4,5,6,7} 4회차-3
if (arr[2] > arr[3]){
temp = arr[3];
arr[3] = arr[2];
arr[2] = temp;
}
// 3,4 비교 -> 참 -> 스왑 {1,2,3,4,5,6,7} 4회차-4
if (arr[3] > arr[4]){
temp = arr[4];
arr[4] = arr[3];
arr[3] = temp;
}
// 4,5 비교 -> 참 -> 스왑 {1,2,3,4,5,6,7} 4회차-5
if (arr[4] > arr[5]){
temp = arr[5];
arr[5] = arr[4];
arr[4] = temp;
}
// 5,6 비교 -> 참 -> 스왑 {1,2,3,4,5,6,7} 4회차-6
if (arr[5] > arr[6]){
temp = arr[6];
arr[6] = arr[5];
arr[5] = temp;
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
}
2) for문 정리
package algo;
public class ChangeData3Me22 {
public static void main(String[] args) {
int[] arr = {7,4,2,3,1,5,6};
int temp;
int row1 = arr.length-1;
int row2;
int x;
int y;
x = 0; //1회전
y = 1;
for (int i = 0; i < row1; i++) {
if (arr[x] > arr[y]){
temp = arr[y];
arr[y] = arr[x];
arr[x] = temp;
}
x++;
y++;
}
x = 0; //2회전
y = 1;
for (int i = 0; i < row1; i++) {
if (arr[x] > arr[y]){
temp = arr[y];
arr[y] = arr[x];
arr[x] = temp;
}
x++;
y++;
}
x = 0; //3회전
y = 1;
for (int i = 0; i < row1; i++) {
if (arr[x] > arr[y]){
temp = arr[y];
arr[y] = arr[x];
arr[x] = temp;
}
x++;
y++;
}
x = 0; //4회전
y = 1;
for (int i = 0; i < row1; i++) {
if (arr[x] > arr[y]){
temp = arr[y];
arr[y] = arr[x];
arr[x] = temp;
}
x++;
y++;
}
x = 0; //5회전
y = 1;
for (int i = 0; i < row1; i++) {
if (arr[x] > arr[y]){
temp = arr[y];
arr[y] = arr[x];
arr[x] = temp;
}
x++;
y++;
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
}3) 최종 정리
package algo;
public class ChangeData3Me23 {
public static void main(String[] args) {
int[] arr = {7,6,5,4,3,2,1};
int temp;
int row1 = arr.length-1;
int row2 = arr.length-1;
int x;
int y;
for (int k = 0; k < row2; k++) {
x = 0;
y = 1;
for (int i = 0; i < row1; i++) {
if (arr[x] > arr[y]){
temp = arr[y];
arr[y] = arr[x];
arr[x] = temp;
}
x++;
y++;
}
row1--;
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
}
+) 참고

row2를 row1로 바꾸고, row1--; 지워도 결과 값은 제대로 나옴.
but 불필요한 스왑 더 해야 함
위 코딩대로 하면 스왑 횟수 36번로 예상됨
※ 숫자 7개일 경우 → 최대 회전수 6번(스왑 횟수는 회전차수마다 6→5→4→3→2→1로 줄어듦) → 최대 스왑 횟수 : 21번
Share article