本次介绍几种经典排序算法以及Java实现代码
1.冒泡排序
冒泡排序是属于相邻两两比较进行排序的一种,由于其实现是经过1到n-1轮排序,
通过比较相邻的两个数,大的向下继续与相邻的进行比较,直到找到正确的顺序位置。
1 | public void bubbleSort(int[] a) { |
2.选择排序
选择排序是经过n-1次选择,每次选中一个数,作为最小基数与剩余的数进行比较,然后选出最小数,与最小基数交换。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16public void selectionSort(int[] a) {
for (int p = 0; p < a.length - 1; p++) {
int minIndex = p;
for (int j = p + 1; j < a.length; j++) {
if (a[minIndex] > a[j]) {
a[minIndex] = a[j];
minIndex = j;
}
}
if (minIndex != p) {
int temp = a[p];
a[p] = a[minIndex];
a[minIndex] = temp;
}
}
}
3.插入排序
插入排序也是两两比较达到排序目的的一种排序算法。插入排序是经过n-1轮排序,
对于p=1到n-1趟,插入排序保证从位置0到p上的元素为以排序状态。插入排序利用了:已知位置0到位置p-1上的元素已经处于排过序的状态。1
2
3
4
5
6
7
8
9
10public void insertionSort(int[] a) {
int j;
for (int p = 1; p < a.length; p++) {//排序轮次n-1次
int temp = a[p];//前p-1的位置已经排好序,取出位置p的数据
for (j = p; j > 0 && temp < a[j - 1]; j--) {//比较p和p-1上的大小,如果p位置上的大,则交换两个位置上的数,否则,继续向前比较,直到可以将位置p上的数能够插入的合适位置
a[j] = a[j - 1];
}
a[j] = temp;
}
}
4.快速排序
1 | public void quickSort(int[] arr, int low, int high) { |