자바 구현:계수 정렬

계수 정렬
4.567917.계수 정렬 의 한계 성:
4.567917.배열 의 최대 와 최소 차이 가 너무 클 때 계수 정렬 에 적합 하지 않다4.567917.배열 요소 가 정수 가 아 닐 때 계수 로 정렬 하기에 도 적합 하지 않다
  • 여 기 는 자바 로 쓴 것 입 니 다.C 언어 를 사용 하면 상수 항목 으로 배열 을 만 들 수 없 기 때 문 입 니 다.예 를 들 어 int sortArray[k];k 는 상수,프로그램 이 실행 하 는 중간 값 을 표시 합 니 다.여기 서 오 류 를 보고 합 니 다.이렇게 하면 동적 으로 단원 을 만들어 야 하기 때문에 매우 번 거 롭 기 때문에 여 기 는 자바 를 사용 하여 이해 하기 편리 하 다

  • 전체 사고방식 자바 와 C 언어 는 차이 가 많 지 않다.
    절차:
  • 배열 의 최대 치 와 최소 치 의 차 이 를 찾 습 니 다
  • 4
  • 새로운 배열[countArray]을 만 들 고 원래 배열 의 모든 수의 개 수 를 저장 하 며 순서대로 저장 합 니 다
  • 4.567917.이 새로운 배열 을 변형 시 키 고 앞의 수의 값 과 현재 위치의 값 을 더 해서 현재 의 위치 값 을 부여 합 니 다4.567917.거꾸로 배열 을 옮 겨 다 니 며 새로운 배열 에서 정확 한 위 치 를 찾 아 결과 배열[새로운 배열 sortedArray]로 출력 합 니 다
  • public class text{
    
        public static void main(String[] args){
    
            int[] array={95,94,91,98,99,90,99,93,91,92};
            int[] sortedArray=countSort(array);
            System.out.println(Arrays.toString(sortedArray));
        }
    
        private static int[] countSort(int[] array) {
            //            ,      d
            int max=array[0];
            int min=array[0];
            for(int i=1;imax){
                    max=array[i];
                }
                if(array[i]=0;i--){
                // sortedArray       
                sortedArray[countArray[array[i]-min]-1]=array[i];
                // countArray     --
                countArray[array[i]-min]--;
            }
            return sortedArray;
        }
    }
  •  
  • 좋은 웹페이지 즐겨찾기