[정상] 순간 데이터 구조 상용 정렬 알고리즘 습득
다음은 JAVA 코드 로 구현 되 는 데이터 구조 중 7 가지 기본 정렬 알고리즘 입 니 다. 도움 이 되 셨 으 면 합 니 다.
(1) 정렬 직접 삽입
/** **/
/** , **/
public static void insertSort(int[] table) {
/** n-1 **/
for (int i = 1; i < table.length; i++) {
/** table[i] **/
int temp = table[i], j;
/** **/
for (j = i - 1; j > -1 && temp < table[j]; j--) {
table[j + 1] = table[j];
}
/** temp **/
table[j + 1] = temp;
}
}
(2) 힐 정렬
<span style="white-space:pre"> </span>/** **/
public static void shellSort(int[] table) {
/** , , **/
for (int delta = table.length / 2; delta > 0; delta /= 2) {
/** , **/
for (int i = delta; i < table.length; i++) {
/** **/
int temp = table[i];
/** delta **/
int j = i - delta;
/** **/
/** **/
while (j >= 0 && temp < table[j]) {
table[j + delta] = table[j];
j -= delta;
}
/** **/
table[j + delta] = temp;
}
}
}
(3) 거품 정렬
<span style="white-space:pre"> </span>/** **/
public static void bubbleSort(int[] table) {
/** **/
boolean exchange = true;
/** , n-1 **/
for (int i = 1; i < table.length && exchange; i++) {
/** **/
exchange = false;
/** 、 **/
for (int j = 0; j < table.length - i; j++) {
/** , **/
if (table[j] > table[j + 1]) {
int temp = table[j];
table[j] = table[j + 1];
table[j + 1] = temp;
/** **/
exchange = true;
}
}
}
}
(4) 빠 른 정렬
<span style="white-space:pre"> </span>/** **/
public static void quickSort(int[] table) {
quickSort(table, 0, table.length - 1);
}
/** , **/
private static void quickSort(int[] table, int low, int high) { // low、high
/** **/
if (low < high) {
int i = low, j = high;
/** **/
int vot = table[i];
/** **/
while (i != j) {
/** **/
while (i < j && vot <= table[j])
j--;
if (i < j) {
/** **/
table[i] = table[j];
i++;
}
/** **/
while (i < j && table[i] < vot)
i++;
if (i < j) {
/** **/
table[j] = table[i];
j--;
}
}
/** **/
table[i] = vot;
/** **/
quickSort(table, low, j - 1);
/** **/
quickSort(table, i + 1, high);
}
}
(5) 정렬 직접 선택
<span style="white-space:pre"> </span>/** **/
public static void selectSort(int[] table) {
/** n-1 **/
for (int i = 0; i < table.length - 1; i++) {
/** table[i] **/
/** i **/
int min = i;
/** **/
for (int j = i + 1; j < table.length; j++)
if (table[j] < table[min])
/** **/
min = j;
/** **/
if (min != i) {
int temp = table[i];
table[i] = table[min];
table[min] = temp;
}
}
}
(6) 더미 정렬
<span style="white-space:pre"> </span>/** **/
public static void heapSort(int[] table) {
int n = table.length;
/** **/
for (int j = n / 2 - 1; j >= 0; j--)
sift(table, j, n - 1);
/** , **/
for (int j = n - 1; j > 0; j--) {
int temp = table[0];
table[0] = table[j];
table[j] = temp;
sift(table, 0, j - 1);
}
}
/** low **/
private static void sift(int[] table, int low, int high) {
/** low、high **/
/** **/
int i = low;
/** j i **/
int j = 2 * i + 1;
/** i **/
int temp = table[i];
/** **/
while (j <= high) {
/** ( < ) **/
if (j < high && table[j] > table[j + 1])
/** j **/
j++;
/** ( < ) **/
if (temp > table[j]) {
/** **/
table[i] = table[j];
/** i、j **/
i = j;
j = 2 * i + 1;
} else
j = high + 1;
}
/** **/
table[i] = temp;
}
(7) 정렬
<span style="white-space:pre"> </span>/** **/
public static void mergeSort(int[] X) {
/** , 1 **/
int n = 1;
/** Y X **/
int[] Y = new int[X.length];
do {
/** , X Y **/
mergepass(X, Y, n);
/** **/
n *= 2;
if (n < X.length) {
/** Y X **/
mergepass(Y, X, n);
n *= 2;
}
} while (n < X.length);
}
/** **/
private static void mergepass(int[] X, int[] Y, int n) {
int i = 0;
while (i < X.length - 2 * n + 1) {
merge(X, Y, i, i + n, n);
i += 2 * n;
}
if (i + n < X.length)
/** **/
merge(X, Y, i, i + n, n);
else
/** X Y **/
for (int j = i; j < X.length; j++)
Y[j] = X[j];
}
/** **/
private static void merge(int[] X, int[] Y, int m, int r, int n) {
int i = m, j = r, k = m;
/** X Y **/
while (i < r && j < r + n && j < X.length)
/** Y **/
if (X[i] < X[j])
Y[k++] = X[i++];
else
Y[k++] = X[j++];
/** Y **/
while (i < r)
Y[k++] = X[i++];
/** Y **/
while (j < r + n && j < X.length)
Y[k++] = X[j++];
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.