객체 배열을 내림차순으로 올바르게 정렬하고 Java에서 검색하는 방법은 무엇입니까?

user3101890

저는 지역 대학의 2 학년 학생이고 현재 컴퓨터 프로그래밍 수업을 듣고 있습니다. 일반적으로 문제가 발생하지만 프로그래밍 수업에서 꽤 잘합니다. 우리 교수는 또 다른 진단 테스트로 완료하기를 원하는 불완전한 알고리즘을 제공했습니다. 그는 바로 가기를 사용하지 않고해야한다고 미리 말씀 드렸습니다. 즉, 비교기를 사용할 수없고 버블, 삽입, 선택 및 병합 정렬과 같은 기본 정렬 알고리즘 만 사용할 수 있으며 이진 또는 선형 검색 만 사용할 수 있습니다.

학생과 점수를 분류하도록 설계된 불완전한 파일을 받았습니다. 내가 생각 해낸 특별한 문제는 정렬 알고리즘과 내가 만들어야하는 검색 알고리즘입니다. 강사는 알고리즘이 작동하는지 확인하기 위해 몇 가지 테스트 자료를 제공했습니다. 놀랍게도 저는 그렇지 않았습니다. 모든 유형의 정렬 알고리즘을 시도했지만 어떤 이유로 알고리즘이 실패했다고 테스트했습니다. 이 곤경을 어떻게 해결해야합니까?

운영체제 : windows 7, Java Workbench : Eclipse

다음은 알고리즘 코드입니다. 아주 지저분 해 보이면 사과드립니다. 이것은 현재 정렬 algorihtm입니다. (제 교수의) 설계는 배열이 내림차순으로 정렬된다는 것입니다.

    public static void sort(Student[] students) {
    if(students == null)
        return;
    for(int i=0;i<students.length-2;i++){
        Student temp = students[i];
        for(int k=i+1;k<students.length-1;k++){
            Student temp2= students[k];
            int result = temp2.compareTo(temp);
            if(result > 0){
                students[k] = temp;
                students[i] = temp2;
            }
        }
    }


}

다음은 검색 알고리즘에 대한 코드입니다. 다시 말하지만, "name"이라는 문자열을 사용하여 학생의 이름과 성을 검색 할 수 있도록 설계되었습니다. 알고리즘은 "lastname firstname"및 "firstname lastname"과 같은 이름의 서식을 무시하고 대문자를 무시하는 방식으로 만들어집니다. 다시 한 번 지저분한 일에 대해 사과하십시오.

    public static int search(Student[] students, String name) {
    if(students == null || students.length == 0)
        return -1;
            for(int i=0;i<students.length;i++){
                name.toLowerCase();
                if(name.compareTo(students[i].getGivenName().toLowerCase()+" "+students[i].getFamilyName().toLowerCase()) == 0 || name.compareTo(students[i].getFamilyName().toLowerCase()+" "+students[i].getGivenName().toLowerCase()) == 0)
                    return 1;
    }
    return -1;
}

그래서 결국, 당신이 끝까지 건너 뛴 경우에, 내 질문은 : 내가 내 정렬 알고리즘에서 무엇을 잘못했는지, 그리고 여전히 제대로 작동하면서 검색 알고리즘을 단축하는 더 좋고 간단한 방법이 있습니까?

편집 : 여기에 각각 정렬 및 검색 알고리즘에 대한 테스트 알고리즘이 있습니다. 테스트 정렬 알고리즘은 내가 만든 정렬 알고리즘을 따를 수 있지만 어떤 이유로 교수가 만든 부울 조건을 통과하지 못합니다.

    public void testSort() throws OutOfRangeException, FileNotFoundException {
    Student[] students = new Student[6];
    students[0] = new Student("joey", "mitchel", new int[]{42,51,64,70,81});
    students[1] = new Student("Sandy", "luchel", new int[]{64,51,64,70,81});
    students[2] = new Student("Sandy", "luchel", new int[]{42,51,64,70,81});
    students[3] = new Student("amanda", "jones", new int[]{95,51,64,70,81});
    students[4] = new Student("Susane", "Louis", new int[]{42,51,64,70,81});
    students[5] = new Student("Samuel", "jones", new int[]{95,51,64,70,81});


    StudentSearcherSorter.sort(students);
    for(int i=0; i<students.length - 1; i++) {
        boolean b1 = students[i].total() > students[i+1].total();
        boolean b2 = false;
        boolean b3 = false;
        if(b1 == false && students[i].total() == students[i+1].total())
            b2 = students[i].getFamilyName().compareTo(students[i+1].getFamilyName()) < 0;
        if(b2 == false && students[i].total() == students[i+1].total() && students[i].getFamilyName().compareTo(students[i+1].getFamilyName()) == 0)
            b3 = students[i].getGivenName().compareTo(students[i+1].getGivenName()) < 0;
        assertTrue(b1 || b2 || b3);
    }
}

및 검색 테스트 알고리즘. 일반적으로 검색 알고리즘에 대한 코드를 처리하는 방식과 관련이있을 수 있지만 무엇이 잘못되었는지 잘 모르겠습니다.

    public void testSearch() throws FileNotFoundException, OutOfRangeException {
    Student[] students = new Student[6];
    students[0] = new Student("joey", "mitchel", new int[]{42,51,64,70,81});
    students[1] = new Student("Sandy", "luchel", new int[]{64,51,64,70,81});
    students[2] = new Student("Sandy", "luchel", new int[]{42,51,64,70,81});
    students[3] = new Student("amanda", "jones", new int[]{95,51,64,70,81});
    students[4] = new Student("Susane", "Louis", new int[]{42,51,64,70,81});
    students[5] = new Student("Samuel", "jones", new int[]{95,51,64,70,81});


    for(int i=0; i<students.length; i++) {
        assertTrue(StudentSearcherSorter.search(students, students[i].getGivenName().toUpperCase()+" "+students[i].getFamilyName()) >= 0);
        assertTrue(StudentSearcherSorter.search(students, students[i].getFamilyName()+" "+students[i].getGivenName().toUpperCase()) >= 0);
    }
}
냉기

정렬에 대해서는 원래 버전에서 코드가 students배열 의 마지막 두 요소를 비교하지 않습니다 .

public static void sort(Student[] students) {
    if(students == null)
        return;

루프의 상한은이어야 students.length - 1하므로의 마지막 값은 i입니다 students.length - 2.

    // for(int i=0;i<students.length-2;i++){
    for(int i=0;i<students.length-1;i++){
        Student temp = students[i];

마찬가지로이 루프의 상한은이어야 students.length하므로의 마지막 값은 k입니다 stidents.length - 1. 또한, 두 경우 모두 교체 할 수 있습니다 <<=.

        // for(int k=i+1;k<students.length-1;k++){
        for(int k=i+1;k<students.length;k++){
            Student temp2= students[k];
            int result = temp2.compareTo(temp);
            if(result > 0){
                students[k] = temp;
                students[i] = temp2;
            }
        }
    }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Bash에서 문자열 배열을 내림차순으로 정렬하는 방법은 무엇입니까?

분류에서Dev

Java에서 문자열 (및 객체)을 올바르게 비교하는 방법은 무엇입니까?

분류에서Dev

PHP에서 키로 배열을 내림차순으로 정렬하는 방법은 무엇입니까?

분류에서Dev

PHP에서 키로 배열을 내림차순으로 정렬하는 방법은 무엇입니까?

분류에서Dev

iOS에서 내림차순으로 배열을 정렬하는 방법은 무엇입니까?

분류에서Dev

PHP에서 내림차순 배열로 두 차원 배열을 정렬하는 방법은 무엇입니까?

분류에서Dev

Javascript 객체 내에서 (함수 || 함수)를 올바르게 정의하는 방법은 무엇입니까?

분류에서Dev

C에서 malloc 및 realloc을 사용하여 구조체 내에서 배열을 올바르게 할당하는 방법은 무엇입니까?

분류에서Dev

PHP의 클래스 내에서 배열을 올바르게 구성하는 방법은 무엇입니까?

분류에서Dev

flatMap 체인 내에서 Completable을 올바르게 완료하는 방법은 무엇입니까?

분류에서Dev

객체가 키로있는 맵을 올바르게 구현하는 방법은 무엇입니까?

분류에서Dev

Java에서 객체 배열 내에서 인스턴스 변수 배열을 검색하는 방법은 무엇입니까?

분류에서Dev

나뭇 가지에 3 차원 배열을 올바르게 루프하는 방법은 무엇입니까?

분류에서Dev

AWS S3에 객체를 올바르게 업로드하는 방법은 무엇입니까?

분류에서Dev

PHP에서 객체 배열의 속성으로 검색하는 방법은 무엇입니까?

분류에서Dev

Kibana "검색"탭에서 날짜 / 시간을 내림차순으로 정렬하는 방법은 무엇입니까?

분류에서Dev

linq로 배열에 값을 올바르게 할당하는 방법은 무엇입니까?

분류에서Dev

자바 스크립트에서 가장 많이 반복되는 배열 값을 내림차순으로 정렬하고 반환하는 함수를 만드는 방법은 무엇입니까?

분류에서Dev

typescript에서 객체 배열을 정렬하는 방법은 무엇입니까?

분류에서Dev

다른 값 [JavaScript]을 기반으로 객체 배열에서 특정 값을 검색하는 방법은 무엇입니까?

분류에서Dev

날짜 배열 (TDate)을 내림차순으로 정렬하는 방법은 무엇입니까?

분류에서Dev

연관 배열을 내림차순으로 정렬하는 방법은 무엇입니까?

분류에서Dev

수학 환경 내에 일반 텍스트 줄을 만들고 LaTeX에서 올바르게 정렬하는 방법은 무엇입니까?

분류에서Dev

레일에 객체 배열을 게시하는 방법은 무엇입니까?

분류에서Dev

React Hooks : 선택 요소 내부에 중첩 된 배열과 객체가있는 배열을 올바르게 매핑하는 방법은 무엇입니까? (새 코더)

분류에서Dev

파일에서 텍스트를 읽고 내림차순으로 정렬하는 방법은 무엇입니까?

분류에서Dev

Javascript에서 열을 여러 열로 올바르게 분할하는 방법은 무엇입니까?

분류에서Dev

SystemVerilog에서 N 차원 대기열을 올바르게 선언하는 방법은 무엇입니까?

분류에서Dev

Java의 List에 객체를 올바르게 삽입하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Bash에서 문자열 배열을 내림차순으로 정렬하는 방법은 무엇입니까?

  2. 2

    Java에서 문자열 (및 객체)을 올바르게 비교하는 방법은 무엇입니까?

  3. 3

    PHP에서 키로 배열을 내림차순으로 정렬하는 방법은 무엇입니까?

  4. 4

    PHP에서 키로 배열을 내림차순으로 정렬하는 방법은 무엇입니까?

  5. 5

    iOS에서 내림차순으로 배열을 정렬하는 방법은 무엇입니까?

  6. 6

    PHP에서 내림차순 배열로 두 차원 배열을 정렬하는 방법은 무엇입니까?

  7. 7

    Javascript 객체 내에서 (함수 || 함수)를 올바르게 정의하는 방법은 무엇입니까?

  8. 8

    C에서 malloc 및 realloc을 사용하여 구조체 내에서 배열을 올바르게 할당하는 방법은 무엇입니까?

  9. 9

    PHP의 클래스 내에서 배열을 올바르게 구성하는 방법은 무엇입니까?

  10. 10

    flatMap 체인 내에서 Completable을 올바르게 완료하는 방법은 무엇입니까?

  11. 11

    객체가 키로있는 맵을 올바르게 구현하는 방법은 무엇입니까?

  12. 12

    Java에서 객체 배열 내에서 인스턴스 변수 배열을 검색하는 방법은 무엇입니까?

  13. 13

    나뭇 가지에 3 차원 배열을 올바르게 루프하는 방법은 무엇입니까?

  14. 14

    AWS S3에 객체를 올바르게 업로드하는 방법은 무엇입니까?

  15. 15

    PHP에서 객체 배열의 속성으로 검색하는 방법은 무엇입니까?

  16. 16

    Kibana "검색"탭에서 날짜 / 시간을 내림차순으로 정렬하는 방법은 무엇입니까?

  17. 17

    linq로 배열에 값을 올바르게 할당하는 방법은 무엇입니까?

  18. 18

    자바 스크립트에서 가장 많이 반복되는 배열 값을 내림차순으로 정렬하고 반환하는 함수를 만드는 방법은 무엇입니까?

  19. 19

    typescript에서 객체 배열을 정렬하는 방법은 무엇입니까?

  20. 20

    다른 값 [JavaScript]을 기반으로 객체 배열에서 특정 값을 검색하는 방법은 무엇입니까?

  21. 21

    날짜 배열 (TDate)을 내림차순으로 정렬하는 방법은 무엇입니까?

  22. 22

    연관 배열을 내림차순으로 정렬하는 방법은 무엇입니까?

  23. 23

    수학 환경 내에 일반 텍스트 줄을 만들고 LaTeX에서 올바르게 정렬하는 방법은 무엇입니까?

  24. 24

    레일에 객체 배열을 게시하는 방법은 무엇입니까?

  25. 25

    React Hooks : 선택 요소 내부에 중첩 된 배열과 객체가있는 배열을 올바르게 매핑하는 방법은 무엇입니까? (새 코더)

  26. 26

    파일에서 텍스트를 읽고 내림차순으로 정렬하는 방법은 무엇입니까?

  27. 27

    Javascript에서 열을 여러 열로 올바르게 분할하는 방법은 무엇입니까?

  28. 28

    SystemVerilog에서 N 차원 대기열을 올바르게 선언하는 방법은 무엇입니까?

  29. 29

    Java의 List에 객체를 올바르게 삽입하는 방법은 무엇입니까?

뜨겁다태그

보관