초급 정렬 알고리즘
19949 단어 알고리즘
먼저 두 가지 개념 을 소개 한다.
/**
*
*
* @param array
*/
private static int[] selectSort(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
for (int j = i + 1; j < array.length; j++) {
int min = i;
if (array[j] < array[min]) {
//
min = j;
}
}
if (i != min) {
int tmp = array[i];
array[i] = array[min];
array[min] = tmp;
}
}
System.out.println(Arrays.toString(array));
return array;
}
거품 정렬
특징:
private static int[] bubbleSort(int[] array) {
boolean notChange = false;
for (int i = 1; i < array.length; i++) {
for (int j = 0; j < array.length - i; j++) {
if (array[j] > array[j + 1]) {
int flag = array[j];
array[j] = array[j + 1];
array[j + 1] = flag;
} else {
notChange = true;
}
}
if (!notChange)
break;
}
System.out.println(Arrays.toString(array));
return array;
}
삽입 정렬
삽입 정렬 을 선택 할 때
private static int[] insertSort(int[] array) {
for (int i = 1; i < array.length; i++) {
//
int tmp = array[i];
int j = i;
while (j > 0 && tmp < array[j - 1]) {
array[j] = array[j - 1];
j--;
}
if (j != i) {
array[j] = tmp;
}
}
System.out.println(Arrays.toString(array));
return array;
}
빠 른 정렬
public static int[] quickSort(int arr[], int start, int end) {
int pivot = arr[start];
int i = start;
int j = end;
while (i < j) {
while ((i < j) && (arr[j] > pivot)) {
j--;
}
while ((i < j) && (arr[i] < pivot)) {
i++;
}
if ((arr[i] == arr[j]) && (i < j)) {
i++;
} else {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
if (i - 1 > start) {
arr = quickSort(arr, start, i - 1);
}
if (j + 1 < end) {
arr = quickSort(arr, j + 1, end);
}
return (arr);
}
최 악의 시간 복잡 도: O (n2)
최 적 시간 복잡 도: O (nlogn)
평균 시간 복잡 도: O (nlogn)
공간 복잡 도: O (log n)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.