Java 석차구하기/선택정렬/버블정렬

조수경·2021년 9월 14일
0

JAVA

목록 보기
7/26

석차구하기: 점수를 비교해 작은 점수의 등수를 증가시키는 방식

     int[]arr = new int [10];
	
	for(int i =0; i < arr.length; i++){
		arr[i]=(int)(Math.random()*100)+1;
	}
	System.out.println(Arrays.toString(arr)); //랜덤 값으로 정렬
    
    int[] rank = new int[arr.length];
	for(int i =0; i <rank.length; i++){
		rank[i]=1;
        }
	for(int i=0; i<arr.length; i++){
	for(int j=0;j<arr.length; j++){
	if(arr[i] < arr[j]){
		rank[i]++;
		}
			}
	}
    for(int i=0; i<arr.length; i++){
	System.out.println(arr[i]+ ":" + rank[i]+"등");
	}
    

선택정렬: 가장 작은 숫자를 찾아서 앞으로 보내는 방식

         i,j
         0,1  0,2  0,3  0,4  0,5  0,6  0,7  0,8  0,9
	 1,2  1,3  1,4  1,5  1,6  1,7  1,8  1,9
	 2,3  2,4  2,5  2,6  2,7  2,8  2,9
	 3,4  3,5  3,6  3,7  3,8  3,9
	 4,5  4,6  4,7  4,8  4,9
	 5,6  5,7  5,8  5,9
	 6,7  6,8  6,9
	 7,8  7,9
	 8,9
    
        int[]arr = new int [10];
	
	for(int i =0; i < arr.length; i++){
		arr[i]=(int)(Math.random()*100)+1;
	}
	System.out.println(Arrays.toString(arr)); //랜덤값으로 10개 정렬 생성
    
                for(int i = 0; i <arr.length-1; i++){
		int min = i; //처음부터 비교하는 것이 아니라 i부터 저장하고 비교(위치를 저장한 것)
		for(int j = i + 1; j < arr.length; j++){    //j가 i보다 크기 때문에 +1
		if(arr[j] < arr[min]){    //arr[min]내가 기억하고 있는 위치
			min = j;  //찾은 가장 작은 위치를 기억하는 것
		 }
		}
		int temp = arr[i];   //i와 최소값이 들어있는 자리의 위치를 바꾼것
		arr[i] = arr[min];
		arr[min] =temp;
	}
		System.out.println(Arrays.toString(arr));
    
    

버블정렬: 바로 뒤의 숫자와 비교해서 큰 수를 뒤로 보내는 방식

	 *j,i
	 *0,1  1,2  2,3  3,4  4,5  5,6  6,7  7,8  8,9 //한바뀌 도는 동안 자리를 안바꾸면 정렬 종료
	 *0,1  1,2  2,3  3,4  4,5  5,6  6,7  7,8  //첫자리는 i 가 아니라 j 임
	 *0,1  1,2  2,3  3,4  4,5  5,6  6,7  
	 *0,1  1,2  2,3  3,4  4,5  5,6 
	 *0,1  1,2  2,3  3,4  4,5 
	 *0,1  1,2  2,3  3,4  
	 *0,1  1,2  2,3  
	 *0,1  1,2 
	 *0,1 
     
     System.out.println(Arrays.toString(arr));
      for(int i = 0; i < arr.length - 1; i++){
          boolean flag = false;
          for(int j = 0; j < arr.length - 1 - i; j++){    //증가하는 i를 빼주면 됌
             if(arr[j] > arr[j +1]){
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
                flag = true;
             }
          }
          if(flag == false){
             break;
          }
       }
       System.out.println(Arrays.toString(arr));
	 
     
        // 버블정렬 쉽게
         
         for(int j = 1; j<arr.length; j++){
     
         for(int i = 0; i<arr.length-j; i++){
         if(arr[i]>arr[i+1]){
           int temp = arr[i];
           arr[i] = arr[i+1];
           arr[i+1]= temp;
     }
  }
  }
  
  System.out.println(Arrays.toString(arr));
  
profile
신입 개발자 입니다!!!

0개의 댓글