排序算法在学习语言之初都会提到,今天就来介绍三种简单的排序算法,分别是插入排序、冒泡排序和选择排序。我前面还写过一个关于快速排序的,有兴趣的可以去看看:http://blog.csdn.net/luqiren/article/details/77197746
1.插入排序
插入排序就是每次将一个数插入到已经排好序的数组里,插入完这个数以后,这个数组还是有序的,它的工作方式就像我们平时排序扑克牌一样,开始时,我们的左手为空并且桌子上的牌面朝下,然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置,为了找到一张牌的正确位置,我们将从右到左将它与已在手中的每张牌进行比较,拿在左手的牌总是有序的。
代码如下:
// 插入排序
public static void insertionSort(int[] a) {
for (int j = 1; j < a.length; j++) {
int key = a[j];
int i = j - 1;
while (i >= 0 && a[i] > key) {
a[i + 1] = a[i];
i = i - 1;
}
a[i + 1] = key;
}
}
2.冒泡排序
冒泡排序就是相邻的两个数字两两比较,然后把最大或者最小的数就像泡一样一点一点往上冒。
代码如下:
// 冒泡排序
public static void bubbleSort(int[] a) {
int temp = 0;
for (int i = 1; i < a.length; i++) {
for (int j = 0; j < a.length - i; j++) {
if (a[j] > a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
3.选择排序
选择排序就是每次比较找到最大或最小的那个数,然后将它排在相应的位置。
代码如下:
// 选择排序
public static void selectSort(int[] a) {
int temp = 0;
for (int i = 0; i < a.length - 1; i++) {
for (int j = i; j < a.length; j++) {
if (a[i] > a[j]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}