图解Java经典算法冒泡选择插入希尔排序的原理与实现
什么是排序算法?
排序算法是计算机科学中的一类基本算法,它将一个乱序的数据序列按照一定的规则重新排列,使得排序后的序列满足特定的要求。
常见的排序方法包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序等。
冒泡排序的原理和实现
冒泡排序是一种简单的排序算法,其基本思想是从小到大依次比较相邻的两个数,将较大的数往后移,一次遍历完成后,最大的数就像气泡一样“冒”到了最后。
下面是冒泡排序的示例代码:
public static void bubbleSort(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
for (int j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
swap(array, j, j + 1);
}
}
}
}
public static void swap(int[] array, int i, int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
上面的代码中,我们利用两个for循环实现了冒泡排序。其中,外层循环控制排序次数,而内层循环则负责比较相邻的两个数,并进行交换。
选择排序的原理和实现
选择排序是一种简单的排序算法,其基本思想是每次找到未排序中最小的数,并将其放到已排序的末尾。
下面是选择排序的示例代码:
public static void selectionSort(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < array.length; j++) {
if (array[j] < array[minIndex]) {
minIndex = j;
}
}
swap(array, i, minIndex);
}
}
上面的代码中,我们利用两个for循环实现了选择排序。其中,外层循环控制排序次数,而内层循环则负责找到未排序中最小的数,并将其放到已排序的末尾。
插入排序的原理和实现
插入排序是一种简单的排序算法,其基本思想是将未排序的数插入已排序的部分,使得整个序列都保持有序。
下面是插入排序的示例代码:
public static void insertionSort(int[] array) {
for (int i = 1; i < array.length; i++) {
int current = array[i];
int j = i - 1;
while (j >= 0 && array[j] > current) {
array[j + 1] = array[j];
j--;
}
array[j + 1] = current;
}
}
上面的代码中,我们利用一个for循环实现了插入排序。其中,外层循环负责遍历整个数组,而内层循环则负责将未排序的数插入已排序的部分。
希尔排序的原理和实现
希尔排序是一种高效的排序算法,其基本思想是将数组分成若干个子序列,对每个子序列进行插入排序,最后对整个数组进行一次插入排序。
下面是希尔排序的示例代码:
public static void shellSort(int[] array) {
int gap = array.length / 2;
while (gap > 0) {
for (int i = gap; i < array.length; i++) {
int current = array[i];
int j = i - gap;
while (j >= 0 && array[j] > current) {
array[j + gap] = array[j];
j -= gap;
}
array[j + gap] = current;
}
gap /= 2;
}
}
上面的代码中,我们利用一个while循环和一个for循环实现了希尔排序。其中,while循环控制增量序列的大小,而for循环则负责将数组分成若干个子序列,并对每个子序列进行插入排序。
总结
到这里,我们已经详细讲解了冒泡排序、选择排序、插入排序、希尔排序的原理和实现,希望大家可以通过这篇文章更好地理解这些经典的排序算法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:图解Java经典算法冒泡选择插入希尔排序的原理与实现 - Python技术站