버블 정렬
이 알고리즘을 보았을 때 버블 정렬은 "소마가 떠오르고 큰 숫자가 가라 앉는다"라는 말을 기억했습니다. 층 비교에 의한 층을 통해, 소마는 표면으로 떠 다니고, 큰 숫자는 "물 바닥의 돌을 가라 앉히십시오." 이것은 분류의 효과를 달성합니다. 버블 분류는 간단한 분류 알고리즘입니다. 정렬 할 시퀀스를 반복적으로 방문하고 한 번에 두 가지 요소를 비교 한 다음 부정확 한 경우 교환합니다. 시퀀스를 방문하는 작업은 교환이 필요하지 않을 때까지 반복됩니다. 즉, 시퀀스가 분류되었습니다. 이 알고리즘의 기원은 요소가 더 작을수록 Exchange를 통해 서열의 상단에 느리게 "플로트"되기 때문입니다.
버블 분류 알고리즘의 작동은 다음과 같습니다.
1. 인접한 요소를 비교하십시오. 첫 번째 것이 두 번째 것보다 크면 두 가지를 교환하십시오.
2. 첫 번째 쌍에서 마지막 쌍으로 시작하여 각각의 인접 요소 쌍에 대해 동일한 작업을 수행하십시오. 이 시점에서 마지막 요소는 가장 큰 숫자 여야합니다.
3. 마지막 요소를 제외한 모든 요소에 대해 위의 단계를 반복하십시오.
4. 비교해야 할 숫자 쌍이 없을 때까지 매번 더 적고 적은 요소에 대해 위의 단계를 계속 반복하십시오.
버블 분류 프로세스 다이어그램 :
예제 코드
public class bubblesort {public static int [] bubblesort (int [] array) {for (int i = 0; i <array.length; i ++) {for (int j = 0; j <array.length-i-1; 배열 [j] = 배열 [j+1]; 배열 [j+1] = 온도; }} system.out.println ( "th"+(i+1)+"정렬"); for (int k = 0; k <array.length; k ++) {system.out.print (array [k]+""); } system.out.println (); } 반환 배열; } / ** * @param args * / public static void main (String [] args) {int [] array = {7,3,9,5,6,8,1}; Bubblesort (배열); }}인쇄 결과 :
1st Order 3 7 5 6 8 1 9 Sorting 2nd Order 3 5 6 7 1 8 9 9 5 6 1 7 8 9SORTING 4 번째 주문 3 5 1 6 7 8 9 SORTING 5 주문 3 1 5 6 7 8 9SORTING 6 1 3 5 6 7 8 9 SORTING 7th Order 1 3 5 6 7 8 9SORTTINT 7 주문 1 3 9 9 9 9 9 9 9 9SORTing 1 3 5 6 7 주문 1 3 9 9 9SORT 1 1 3 5 6 7 주문 1 3 9 9SOrt 1 3 5 6 7 8 9 9 차 주문 1 3 5 6 7 8 9 9 주문 3 5 6 7 8 9 9 번지 6 주문 1 3 5 6 7 8 9 9SORTING 7 번째 주문 1 3 5 6 7 8 9SORTING 5 주문 3 5 6 7 8 9 9SORTTING 5 6 7 8 9 8 6 8 9 9 9 9 8 9 9 8 9 9 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 8 9 8 9 8 9 8 9 8 9 8 9 8 9 8 9 8 9 8 9 9 7SORTEN 9 5 6 주문 3 5 6 7 8 9 번조 5 차 주문 3 5 6 7 8 9 9 번지 5 차 주문 3 5 6 7 8 9 번조 5 차 주문 3 5 6 7 8 9 9 번지 5 주문 5 주문 5 차 5 차 5 차 5 차 5 차 5 차 5 차 5 차 5 차 5 차 5 차 5 차 5 차 5 차 5 차 5 차.
이진 검색
순서를 정렬 한 후에는 원하는 데이터도 찾아야합니다. 이분법 검색은 일반적으로 사용되는 섹션 시간 및 기본 알고리즘입니다. 이진 검색은 목재 막대기의 중간 쌍과 유사한 정렬 된 데이터의 중간 위치에서 검색 및 비교하는 것이므로 접이식 및 반 찾기라고도합니다. 보다 효율적인 검색 방법입니다.
[이진 검색 요구 사항] : 1. 순차적 인 저장 구조를 채택해야합니다. 2. 키는 키워드의 크기에 따라 순서대로 정렬되어야합니다.
[Pros and Disadvantages] 반 마감 검색 방법의 장점은 비교 시간, 빠른 검색 속도 및 우수한 평균 성능이 있다는 것입니다. 그것의 단점은 보울 테이블이 주문 테이블이며 삽입 및 삭제하기가 어렵다는 것입니다. 따라서 반 찾기 방법은 자주 변경되지 않고 자주 발견되는 순서 대기 목록에 적합합니다.
[알고리즘 사고] 먼저 테이블의 중간 위치에 기록 된 키워드를 검색 키워드와 비교하십시오. 두 사람이 동일하면 검색이 성공할 것입니다. 그렇지 않으면 테이블은 중간 위치 레코드와 함께 두 개의 하위 테이블로 나뉩니다. 중간 위치에 기록 된 키워드가 검색 키워드보다 큰 경우 이전 하위 테이블을 추가로 검색하고 다음 하위 테이블을 추가로 검색하십시오.
검색이 성공적이되도록 조건을 충족하는 레코드가 발견 될 때까지 또는 하위 테이블이 존재하지 않을 때까지 검색이 실패합니다.
[알고리즘 복잡성] 배열 길이가 n이라고 가정하면 알고리즘 복잡성은 o(log(n)), 최악의 시간 복잡성은 O(n)。
예제 코드
패키지 com.somnus.array;/** * 바이너리 검색 방법 * @Author Compaq * */public class binarySearch {public static int binarysearch (int [] array, int value) {int low = 0; int high = array.length-1; int middle = 0; while (low <= high) {middle = (Low+High)/2; // 0 6 4 6 6 6 for (int i = 0; i <array.length; i ++) {System.out.print (Array [i]+""); if (i == middle) // 3 5 6 중간 지점 {System.out.print ( "##") 바로 뒤에 구분기를 인쇄합니다. }} system.out.println (); if (array [middle] == value) {return middle; } if (value <array [middle]) {high = middle -1; } if (value> array [middle]) {low = middle + 1; }} 반환 -1; } / ** * @param args * / public static void main (String [] args) {int [] array = {7,3,9,5,6,8,1}; int [] array1 = bubblesort.bubblesort (배열); int index = BinarySearch (Array1,1); System.out.println ( "local :"+index); }}인쇄 결과 :
1st Order 3 7 5 6 8 1 9 SORTING 2 SND ORDER 3 5 6 7 1 8 9 9 5 6 1 7 8 9SORTING 4 1 6 주문 3 5 1 6 7 8 9 9SORTING 6 주문 1 3 5 6 7 8 9 7 번째 주문 1 3 5 6 7 8 91 3 5 6 6 91 3 7 710011111111111119 8 9 1
분석 및 요약
검색 알고리즘에서 이분법은 가장 빠르지 만 순서 시퀀스 여야합니다. 이것들은 알고리즘의 기초이며, 우리는 여전히 알고리즘 학습을 실험, 요약, 흡수 및 고집하는 데 많은 노력을 기울여야합니다.