常见排序算法
Posted 康威特冶楼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常见排序算法相关的知识,希望对你有一定的参考价值。
一、冒泡排序
public static void bubbleSort(int[] ints) {
for(int i = 0; i < ints.length - 1; i++) {
for(int j = 0; j < ints.length - 1 - i; j++) {
if (ints[j] > ints[j + 1]) {
int temp = ints[j];
ints[j] = ints[j + 1];
ints[j + 1] = temp;
}
}
}
}
二、插入排序
public static void insertionSort(int[] ints) {
for (int i = 1; i < ints.length; i++) {
int temp = ints[i];
int j = i - 1;
while (j >= 0 && ints[j] > temp) {
ints[j + 1] = ints[j];
j--;
}
ints[j + 1] = temp;
}
}
三、选择排序
public static void selectionSort(int[] ints) {
for (int i = 0; i < ints.length - 1; i++) {
int minIndex = i;
// 每一个元素都和剩下的未排序的元素比较
for (int j = i + 1; j < ints.length; j++) {
if (ints[minIndex] > ints[j]) {
minIndex = j;
}
}
// 经过一轮循环,k为本轮最小值的下标,如果最小值下标不是自己,就把最小值跟自己互换位置
if (minIndex != i) {
int temp = ints[i];
ints[i] = ints[minIndex];
ints[minIndex] = temp;
}
}
}
四、快速排序
public static void quickSort(int[] ints, int start, int end) {
int pivot = ints[start], i = start, j = end;
while (i < j) {
// 从右向左找小于pivot的数来填ints[i]
while (i < j && ints[j] >= pivot) {
j--;
}
if (i < j) {
ints[i] = ints[j];
i++;
}
// 从左向右找大于或等于pivot的数来填ints[j]
while (i < j && ints[i] < pivot) {
i++;
}
if (i < j) {
ints[j] = ints[i];
}
ints[i] = pivot;
// 左边区间快速排序
quickSort(ints, start, i - 1);
// 右边区间快速排序
quickSort(ints, i + 1, end);
}
}
以上是关于常见排序算法的主要内容,如果未能解决你的问题,请参考以下文章