본문내용
4
8
8
4
1
2
5
9
3
6
6
5
8
2
8
9
1
2
5
5
3
2
7
3
3
6
3
4
9
3
6
1
4
3
6
5
8
4
7
0
8
8
4
2
8
9
1
2
5
1
4
3
2
8
9
4
7
0
5
3
2
6
3
4
6
5
8
7
3
3
8
8
4
9
3
6
1
2
5
1
4
3
2
8
9
4
7
0
5
3
2
6
3
4
6
5
8
7
3
3
8
8
4
9
3
6
100단위정렬
정렬완료
10단위정렬
1단위정렬
정 렬 전
위 그림과 같은 방식으로 정렬 하는 방식이 기수 정렬입니다. 보는바와 같이 지금까지 했던 정렬과 다른 방식의 독특 한 방식으로 되어있지만, 충분한 정렬 속도를 보장 하고 안전하기 때문에 많이 사용 되고 있습니다. 가장 먼저 1의 단위를 순서대로 정렬을 합니다. 그러면 그림의 2번째 가 될 것입니다. 이때 정렬 할 때 순서 없이 정렬 하는 것이 아니라, 기존의 정렬 전 순서에서 가장 먼저 똑같은 숫자 예를 들어 3을 정렬 할 때 기존의 정렬 전 데이터에서 가장 먼저 만나는 것을 위에 두고 나중에 만나는 것은 아래에 두는 식으러 정렬해야 합니다. 다음 10의 자리도 똑같은 방식으로 1단위 정렬했던 자료를 이용하여 할 수 있습니다. 그렇게 100단위 정렬을 하면 정렬이 완료되었음을 알 수 있습니다.
기 수 정 렬
import java.util.*;
class RadixSort{
public static void main(String args[]){
Random ran = new Random();
int[] arr=new int[10];int a;int count=0;
System.out.println("============= Radix Sort =============");
//101~999 까지 난수 10개 만듬
while(true){
a=ran.nextInt()%1000;
if(a>100){
arr[count] = a;
count++;
}
if(count == 10)break;
}
displayArray_int(arr);
Radix(arr);
System.out.println("=====================================");
}
static int[] Radix(int[] array){
int num_digits = 0;
for(int i=0; i
if(Integer.toString(array[i]).length() > num_digits){
num_digits = Integer.toString(array[i]).length();
}
}
Integer[] arr = new Integer[array.length];
for(int i=0; i
arr[i]=new Integer(array[i]);
}
for(int i=0; i
Stack[] s = new Stack[10];
for(int j=0;j
s[j]=new Stack();
}
for(int j=arr.length-1;j>=0;j--){
int idx = (int)((arr[j].intValue()
% (Math.pow(10,i+1))) / (Math.pow(10,i)));
s[idx].push(arr[j]);
}
int k=0;
for(int j=0;j
while(!s[j].empty()){
arr[k++]=(Integer)s[j].pop();
}
}
displayArray_Integer(arr);
}
for(int j=0;j
array[j]=arr[j].intValue();
}
return array;
}
static void displayArray_int(int[] array){
for(int i=0; i
System.out.print(array[i]+" ");
}
System.out.println(" ");
}
static void displayArray_Integer(Integer[] array){
for(int i=0; i
System.out.print(array[i]+" ");
}
System.out.println(" ");
}
}
『 결 론 』
지금까지 정렬에 대해 공부 하였습니다.
복습하면, 정렬에는 크게 기본 정렬과 개선된 정렬이 있었으며, 기본정렬에는 버블 정렬, 선택 정렬, 삽입 정렬 세 가지 종류가 있으며, 개선된 정렬에는 쉘 정렬, 퀵 정렬, 기수 정렬 이렇게 3가지를 합해서 총 6가지 정렬에 대해 공부 하였습니다.
기본정렬은 개선된 정렬에 비해 간단한 구조로 되어 있습니다. 그래서 처음 정렬에 대해 공부하는 학생에게는 정렬이 어떤 것이다 이해 할 수 있는 좋은 자료가 되고 있습니다. 특히 버블 정렬은 기본 정렬 중 가장 간단하고 정렬 하는 방식도 어렵지 않아, 정렬을 처음 접할 때 교육용으로 적합한 정렬이라 할 수 있습니다. 하지만 정렬 방식도 간단하고, 정렬에 필요한 코드 작성도 개선된 정렬 보다 간단하지만, 그에 따라 많은 데이터를 정렬 할 때 개선된 정렬에 비하면, 컴퓨터 입장에서는 많은 비교와 교체를 해야 됨으로 여간 부담스러운 정렬이 아닐 수 없습니다. 하지만, 적은 데이터 정렬 할 때에는 코드도 간단하고 해서 처리하는 속도도 차이가 거의 없고, 코드 작성도 간단하여 많이 사용 하고 있습니다.
개선된 정렬은 기본정렬에 비해 매우 빠른 정렬이 가능 합니다. 하지만 처음 정렬을 접한 학생에게는 정렬 방법도 복잡하고, 코드로 구현할 때는 많은 어려움 이 있어서, 완벽하게 해당 정렬에 대해 이해가 필요 합니다. 물론 기본 정렬도 정렬하는 방법을 완벽히 이해를 해야 정렬이 가능 하겠지만, 개선된 정렬에 비해 코드의 길이도 짧고 크게 어려움 없이 정렬 코드를 작성 할 수 있습니다. 이렇게 개선된 정렬은 이해하기도 좀 더 복잡하고, 코드 구현도 어렵지만, 많은 데이터 정렬시 훌륭한 정렬 속도를 가지고 있어서, 실재로 많은 부분에서 사용되고 있습니다.
이상으로 보고서를 마치겠습니다.
8
8
4
1
2
5
9
3
6
6
5
8
2
8
9
1
2
5
5
3
2
7
3
3
6
3
4
9
3
6
1
4
3
6
5
8
4
7
0
8
8
4
2
8
9
1
2
5
1
4
3
2
8
9
4
7
0
5
3
2
6
3
4
6
5
8
7
3
3
8
8
4
9
3
6
1
2
5
1
4
3
2
8
9
4
7
0
5
3
2
6
3
4
6
5
8
7
3
3
8
8
4
9
3
6
100단위정렬
정렬완료
10단위정렬
1단위정렬
정 렬 전
위 그림과 같은 방식으로 정렬 하는 방식이 기수 정렬입니다. 보는바와 같이 지금까지 했던 정렬과 다른 방식의 독특 한 방식으로 되어있지만, 충분한 정렬 속도를 보장 하고 안전하기 때문에 많이 사용 되고 있습니다. 가장 먼저 1의 단위를 순서대로 정렬을 합니다. 그러면 그림의 2번째 가 될 것입니다. 이때 정렬 할 때 순서 없이 정렬 하는 것이 아니라, 기존의 정렬 전 순서에서 가장 먼저 똑같은 숫자 예를 들어 3을 정렬 할 때 기존의 정렬 전 데이터에서 가장 먼저 만나는 것을 위에 두고 나중에 만나는 것은 아래에 두는 식으러 정렬해야 합니다. 다음 10의 자리도 똑같은 방식으로 1단위 정렬했던 자료를 이용하여 할 수 있습니다. 그렇게 100단위 정렬을 하면 정렬이 완료되었음을 알 수 있습니다.
기 수 정 렬
import java.util.*;
class RadixSort{
public static void main(String args[]){
Random ran = new Random();
int[] arr=new int[10];int a;int count=0;
System.out.println("============= Radix Sort =============");
//101~999 까지 난수 10개 만듬
while(true){
a=ran.nextInt()%1000;
if(a>100){
arr[count] = a;
count++;
}
if(count == 10)break;
}
displayArray_int(arr);
Radix(arr);
System.out.println("=====================================");
}
static int[] Radix(int[] array){
int num_digits = 0;
for(int i=0; i
num_digits = Integer.toString(array[i]).length();
}
}
Integer[] arr = new Integer[array.length];
for(int i=0; i
}
for(int i=0; i
for(int j=0;j
}
for(int j=arr.length-1;j>=0;j--){
int idx = (int)((arr[j].intValue()
% (Math.pow(10,i+1))) / (Math.pow(10,i)));
s[idx].push(arr[j]);
}
int k=0;
for(int j=0;j
arr[k++]=(Integer)s[j].pop();
}
}
displayArray_Integer(arr);
}
for(int j=0;j
}
return array;
}
static void displayArray_int(int[] array){
for(int i=0; i
}
System.out.println(" ");
}
static void displayArray_Integer(Integer[] array){
for(int i=0; i
}
System.out.println(" ");
}
}
『 결 론 』
지금까지 정렬에 대해 공부 하였습니다.
복습하면, 정렬에는 크게 기본 정렬과 개선된 정렬이 있었으며, 기본정렬에는 버블 정렬, 선택 정렬, 삽입 정렬 세 가지 종류가 있으며, 개선된 정렬에는 쉘 정렬, 퀵 정렬, 기수 정렬 이렇게 3가지를 합해서 총 6가지 정렬에 대해 공부 하였습니다.
기본정렬은 개선된 정렬에 비해 간단한 구조로 되어 있습니다. 그래서 처음 정렬에 대해 공부하는 학생에게는 정렬이 어떤 것이다 이해 할 수 있는 좋은 자료가 되고 있습니다. 특히 버블 정렬은 기본 정렬 중 가장 간단하고 정렬 하는 방식도 어렵지 않아, 정렬을 처음 접할 때 교육용으로 적합한 정렬이라 할 수 있습니다. 하지만 정렬 방식도 간단하고, 정렬에 필요한 코드 작성도 개선된 정렬 보다 간단하지만, 그에 따라 많은 데이터를 정렬 할 때 개선된 정렬에 비하면, 컴퓨터 입장에서는 많은 비교와 교체를 해야 됨으로 여간 부담스러운 정렬이 아닐 수 없습니다. 하지만, 적은 데이터 정렬 할 때에는 코드도 간단하고 해서 처리하는 속도도 차이가 거의 없고, 코드 작성도 간단하여 많이 사용 하고 있습니다.
개선된 정렬은 기본정렬에 비해 매우 빠른 정렬이 가능 합니다. 하지만 처음 정렬을 접한 학생에게는 정렬 방법도 복잡하고, 코드로 구현할 때는 많은 어려움 이 있어서, 완벽하게 해당 정렬에 대해 이해가 필요 합니다. 물론 기본 정렬도 정렬하는 방법을 완벽히 이해를 해야 정렬이 가능 하겠지만, 개선된 정렬에 비해 코드의 길이도 짧고 크게 어려움 없이 정렬 코드를 작성 할 수 있습니다. 이렇게 개선된 정렬은 이해하기도 좀 더 복잡하고, 코드 구현도 어렵지만, 많은 데이터 정렬시 훌륭한 정렬 속도를 가지고 있어서, 실재로 많은 부분에서 사용되고 있습니다.
이상으로 보고서를 마치겠습니다.
추천자료
Ralph Tyler의 「교육과정과 학습지도의 기본원리」요약본
[생활과건강] 건강운동의 기본원리, 종류, 강도, 지속시간, 빈도, 단계 분석과 나의 2주간 운...
사회복지실천기술의 개념(1장)와 사회복지사의 기본자세에 대하여 서술(3장)-참고문헌포함
[노인상담] 노인상담의 기본원리과 실제
사회복지관의 의미, 사회복지관의 유래, 사회복지관의 역할, 사회복지관의 기본원칙, 사회복...
사회복지수급권(사회권적 기본권)의 법적 성격에 대해 각 견해를 비교하여 서술하고 자신의 ...
성숙이론과 구성주의 이론의 배경, 기본전제, 대표적 이론가의 주장을 소개하고 두 이론을 비...
[동작훈련교육]동작훈련(동작훈련교육)과 기본생활교육, 동작훈련(동작훈련교육)과 레크레이...
[사회복지실천기술론] 사회복지실천기술의 기본과정과 기술 - 접수면접과 관여, 자료수집과 ...
표준보육과정과 만 5세 실시되고 있는 누리교육과정을 비교하고 교육과정 수립의 기본원리에...
[부모교육] <에니어그램(Enneagram)> 에니어그램의 개념과 교육목표 및 기본원리
[가족생활교육]가족생활교육의 기본 가정과 가족기능 강화를 위한 세계적 추세
[아동발달] 누리과정과 표준보육과정에 대한 차이점 및 대안 - 누리과정의 기본동향, 표준보...
최근에 제정된 저출산 고령사회기본법이 우리 사회에 미치는 영향에 대하여 느낀 점을 서술하...
소개글