거품 정렬 알고리즘 원리 및 JAVA 구현 코드

1914 단어 거품 정렬
거품 정렬법: 키워드가 비교적 작은 기록은 기포가 한 번씩 올라가는 것과 같고, 키워드가 비교적 큰 기록은 돌덩이가 가라앉는 것과 같고, 한 번에 가장 큰 돌덩이가 가라앉는 것과 같다.
알고리즘 본질: (최대치가 관건이다. 틀림없이 마지막에 놓을 것이다. 이렇게 순환한다) 매번 1위에서 뒤로 스크롤하여 비교하여 최대치를 바닥에 가라앉히고 최소치를 한 번 상승시키며 마지막은 앞으로 추진한다(즉 마지막이 방금 확정된 최대치는 비교에 참가하지 않고 비교 횟수보다 1을 줄인다)
복잡도: 시간 복잡도 O(n2), 공간 복잡도 O(1)
JAVA 소스 코드(실행 성공, Date 클래스 필요)

 public static void bubbleSort(Date[] days) {
  int len = days.length;
  Date temp;
  for (int i = len - 1; i >= 1; i--) {
   for (int j = 0; j < i; j++) {
    if (days[j].compare(days[j + 1]) > 0) {
     temp = days[j + 1];
     days[j + 1] = days[j];
     days[j] = temp;
    }
   }
  }
 }
class Date {
 int year, month, day;

 Date(int y, int m, int d) {
  year = y;
  month = m;
  day = d;
 }

 public int compare(Date date) {
  return year > date.year ? 1 : year < date.year ? -1
    : month > date.month ? 1 : month < date.month ? -1
      : day > date.day ? 1 : day < date.day ? -1 : 0;
 }

 public void print() {
  System.out.println(year + " " + month + " " + day);
 }
}


package testSortAlgorithm;

public class BubbleSort {
 public static void main(String[] args) {
  int array[] = { 5, 6, 8, 4, 2, 4, 9, 0 };
  bubbleSort(array);
  for (int i = 0; i < array.length; i++) {
   System.out.println(array[i]);
  }
 }

 public static void bubbleSort(int array[]) {
  int temp;
  for (int i = array.length - 1; i > 0; i--) {
   for (int j = 0; j < i; j++) {
    if (array[j] > array[j + 1]) {
     temp = array[j];
     array[j] = array[j + 1];
     array[j + 1] = temp;
    }
   }
  }
 }
}

좋은 웹페이지 즐겨찾기