package d_array;
public class Sortbasic {
public static void main(String[] args) {
/*
1. 정렬
- 어떠한 데이터를 빠르고 쉽게 찾기위해 일정한 순서대로 데이터를 가지런히 나열하는 작업
- 검색을 찾기
- 버블정렬, 선택정렬, 삽입정렬
2. 버블정렬bubble sort
- '인접한 데이터'간에 교환이 계속적으로 일어나면서 정렬이 이루어진다
- 오름차순 기준으로 가장 큰 값을 뒤로 보낸다.
*/
// int[] array = new int[]{5,2,3,1,4};
// for(int i=0; i<5; i++){
// System.out.print(array[i] );
// if(array[0]>array[i]){
// array[i]=array[0];
// }
// }
// int[] array = new int[]{5,2,3,1,4};
// int max = array[0];
// for(int i=0; i<array.length;i++){
// if(array[0]<array[i]){
// array[0]=array[i];
// }
// System.out.print(array[i]);
// }
// int[] array = new int[]{5,2,3,1,4};
// int first = 5;
// if(array[1]>array[2]){
// array[1]=array[0];
// first=array[1];
// System.out.print(array[0]);
// }
// int[] array = new int[]{5,2,3,1,4};
////1회전
// if(array[0]>array[1]){
// //값을 자리를 바꾼다
// int temp = array[0];
// array[0]=array[1];
// array[1]=temp;
// }
// if(array[1]>array[2]){
// //값을 자리를 바꾼다
// int temp = array[0];
// array[1]=array[2];
// array[2]=temp;
// }
// if(array[2]>array[3]){
// //값을 자리를 바꾼다
// int temp = array[0];
// array[0]=array[1];
// array[1]=temp;
// }
// if(array[3]>array[4]){
// //값을 자리를 바꾼다
// int temp = array[0];
// array[0]=array[1];
// array[1]=temp;
// }
// if(array[4]>array[i]){ //자리가 없다.
// //값을 자리를 바꾼다
// }
// 비교 기준은 마지막 방까지 안간다
// 기준이 전체 크기보다 하나 적은 1번이 기준이 된다
// 전체 길이 -1
// int[] array = new int[]{5,2,3,1,4};
// for(int i=0; i<array.length-1;i++){ // i는 기준이 되는 방번호
// if(array[i]>array[i+1]){
// //값을 자리를 바꾼다
// int temp = array[i];
// array[i]=array[i+1];
// array[i+1]=temp;
// }
// System.out.print(array[i]);
// }
// int[] array = new int[]{5,2,3,1,4};
////1회전
// for(int i=0; i<array.length-1;i++){
// if(array[i]>array[i+1]){
// //값을 자리를 바꾼다
// int temp = array[i];
// array[i]=array[i+1];
// array[i+1]=temp;
// }
// System.out.print(array[i]);
// for(int j=0; j<array.length;j++){
// System.out.print(array[j]);
// }
// System.out.println("--1회전");
// }
////2회전
// for(int i=1; i<array.length-1;i++){
// if(array[i]>array[i+1]){
// //값을 자리를 바꾼다
// int temp = array[i];
// array[i]=array[i+1];
// array[i+1]=temp;
// }
// System.out.print(array[i]);
// for(int j=0; j<array.length;j++){
// System.out.print(array[j]);
// }
// System.out.println("--2회전");
// }
////3회전
// System.out.println("");
// for(int i=2; i<array.length-1;i++){
// if(array[i]>array[i+1]){
// //값을 자리를 바꾼다
// int temp = array[i];
// array[i]=array[i+1];
// array[i+1]=temp;
// }
// System.out.print(array[i]);
// for(int j=0; j<array.length;j++){
// System.out.print(array[j]);
// }
// System.out.println("--3회전");
// }
////4회전
// System.out.println("");
// for(int i=3; i<array.length-1;i++){
// if(array[i]>array[i+1]){
// //값을 자리를 바꾼다
// int temp = array[i];
// array[i]=array[i+1];
// array[i+1]=temp;
// }
// System.out.print(array[i]);
// for(int j=0; j<array.length;j++){
// System.out.print(array[j]);
// }
// System.out.println("--4회전");
// }
// int[] array = new int[]{5,2,3,1,4};
// System.out.println("");
// for(int j=0; j<array.length-1-j;j++){
//-j = 확정될 수록 줄여준다
// = 버블링 하나(for문 하나)가 완료되었을때
// System.out.println("--4회전");
// for(int i=0; i<array.length-1;i++){
// if(array[i]>array[i+1]){
// //값을 자리를 바꾼다
// int temp = array[i];
// array[i]=array[i+1];
// array[i+1]=temp;
// }
// for(int p=0; p<array.length;p++){
// System.out.print(array[p]);
// }
// }
// }
// 최종
// int[] array = new int[]{5,2,3,1,4};
//
// for(int j=0; j<array.length-1;j++){//회전 수
// System.out.println(" --- "+j+"회전");
// for(int i=0; i<array.length-1-j;i++){//버블 수
// if(array[i]>array[i+1]){
// //값을 자리를 바꾼다
// int temp = array[i];
// array[i]=array[i+1];
// array[i+1]=temp;
// }
// for(int p=0; p<array.length-1;p++){
// System.out.print(array[p]);
// }
// System.out.println();
// }
// }
/*select sort : 최소값 + 뭔가 하나더 추가 */
//가장 작은 수를 맨앞으로 보낸다
//53142
// int[] num = new int[]{5,3,1,4,2};
//
// int fst = num[0]; //최소값 구하는 과정for(if(min = num[i];))에서 덮어써지기 전에 백업한다
// int min = 0;
// int no =0;
// for(int i=1; i<num.length-1;i++){ //앞뒤 쌍으로 검색하는 반복문
// if(num[0]>num[i]){ //최소값 구하는 과정
// no = i; //반복문 횟수 = 방번호 = 최소값 구하는 과정
// min = num[i]; //생략?최소값 변수에 최소값을 백업한다
// }
// num[0]=min; //기준으로 시작한 자리 //생략?기준 자리에 최소값 변수를 기재한다
// }
// num[no]=fst;// 위치! 자리만 들고왔다. for 밖에서 연산
//
// System.out.println("fst> "+fst); //fst> 3
// System.out.println("min> "+min); //min> 1
// System.out.println("min room no> "+no); //min room no> 2
//
// System.out.println("");
// for(int p=0; p<num.length;p++){
// System.out.print(num[p]);
// }
// int[] num = new int[]{5,3,1,4,2};
//
// int fst = num[0]; //3.최소값 방 이동으로 인해 지워진 값 백업
// int no =0;
// for(int i=1; i<num.length-1;i++){ //1.최소값 구하고, 방 이동(최소값)
// if(num[0]>num[i]){
// num[0] = num[i];
// no = i; //2.최소값 방 자리 찾기(최소값 자리 = 반복문 횟수)
// }
// }
// num[no]=fst; //3.최소값 방 자리로 백업(지워질뻔한) 값 이동해서 살리기
int[] num = new int[]{5,3,1,4,2};
for(int j=0; j<num.length-1; j++){
int fst = num[j];
int no =j;
for(int i=1; i<num.length-1;j++){
if(num[0]>num[i]){
num[0] = num[i];
no = i;
}
}
num[no]=fst;
for(int p=0; p<num.length;p++){
System.out.print(num[p]);
}
}
}
}
