본문 바로가기

개발하자/JAVA문제풀이

버블정렬(재귀함수 사용)

문제)무작위로 10개의 숫자 입력받아 순서대로 정렬하기(버블정렬-재귀함수 사용)


import java.util.Scanner;
class Main{
   static int arr[]=new int[10];
   static int temp;
   static int k;

   static int sort(int j){
     
         if(j<9){  
               for(k=0;k<9;k++){         //한번돌고 다시 인덱스 값 초기화 시켜서 돌리기 위해 포문사용
                  if(arr[k]>arr[k+1]){      //0번방1번방,1번방2번방,2번방3번방...숫자크기 비교해서 값 바꾸기
                     temp=arr[k+1];
                     arr[k+1]=arr[k];
                     arr[k]=temp;
  
                     System.out.println(arr[0]+","+arr[1]+","+arr[2]+","+arr[3]+","+arr[4]+","+arr[5]+","+arr[6]+","+arr[7]+","+arr[8]+","+arr[9]);
                  }
           
               }
           
               return  sort(j+1);    //배열 인덱스값 순차비교를 위해 재귀함수사용
         }else{  
            return 1;  
         }
   }//sort
   public static void main(String[] args){
      Scanner sc = new Scanner(System.in);

      for(int i=0;i<10;i++){
            arr[i]=sc.nextInt();
      }
      sort(0);   //정렬을 위한 메서드 호출     
   }
}



-----------------------------------------------------------------------------------

데이터 수 , 스텝 수가 주어질 때 위와 같이 동작하도록 한 후 주어진 스텝 후의 배열의 상태를 출력하는 것이다.

예를 들어 7 개의 데이터가 주어지고 ,

 2 스텝 후의 상태는

6 2 9 8 3 4 7

1 번째 스텝: 2 6 8 3 4 7 9
2 번째 스텝: 2 6 3 4 7 8 9

2 6 3 4 7 8 9 를 출력하면 된다.

입력

입력의

  • 첫 줄은 데이터의 개수 n, 스텝 수 s 가 주어진다. ( 1 <= s < n )
  • 다음 줄에는 n 개의 데이터가 입력으로 주어진다. 각 수는 -1000 에서 1000 사이 정수이다.

n 은 1000 이하의 양의 정수이다.

출력

s 스텝 후의 상태를 한 줄에 출력한다.

입출력 예

입력
7 26 2 9 8 3 4 7
출력
2 6 3 4 7 8 9


sol)

import java.util.Scanner;
class Main{
   static Scanner sc = new Scanner(System.in);
   static int n=sc.nextInt();
   static int s=sc.nextInt();
   static int arr[]=new int[n];
   static int temp;
   static int k;

   static int sort(int j){
     
         if(j<s){  
               for(k=0;k<n-1;k++){
                  if(arr[k]>arr[k+1]){    
                     temp=arr[k+1];
                     arr[k+1]=arr[k];
                     arr[k]=temp;
                  }
               }
               return  sort(j+1);
         }else{  

 for(int w=0;w<n;w++){
                     System.out.print(arr[w]+" ");
  }
            return 1;  
         }
   }
   public static void main(String[] args){

       for(int i=0;i<n;i++){
              arr[i]=sc.nextInt();
      }
       sort(0); 
   }
}


'개발하자 > JAVA문제풀이' 카테고리의 다른 글

frequency (수의 빈도수 계산)  (0) 2015.01.06
윷놀이  (0) 2015.01.06
이진수로 변경하는 프로그램작성(재귀함수 이용)  (0) 2015.01.06
2진회귀수 문제  (0) 2015.01.06
수뒤집기&회귀수 문제  (0) 2015.01.06