使用Java函数实现排序算法(冒泡排序,快速排序等)
排序算法是计算机科学中最常用的算法之一。在编程中,需要对大量的数据进行排序,例如在数据库检索中,需要将数据按照某种条件进行排序,以便更快更方便地查找。在本文中,我们将介绍一些常用的排序算法及其Java代码实现。
1. 冒泡排序
冒泡排序是一种简单的排序算法,它每次比较相邻的两个数据,如果它们的顺序不对,就交换它们的位置。这样, 轮排序后,最后面的数据就是最大的数。接着,对前面的数据重复这个过程,直到全部排序完成。
下面是冒泡排序的Java代码实现:
public static void bubbleSort(int[] arr) {
int temp;
int len = arr.length;
for(int i=0; i<len-1; i++) {
for(int j=0; j<len-1-i; j++) {
if(arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
在这个代码中,我们首先定义了一个临时变量temp,用来交换相邻两个数据。然后在外层循环中,通过比较相邻两个数据的大小来调整它们的位置,使大的数逐渐向后排。在内层循环中,我们遍历数组的所有数据,并且在遍历的每一轮中都比较相邻的两个数据,并交换它们的位置。循环的次数逐渐减少,因为每一轮排序后,数组的最后面的数据已经被排好序了,不再需要参与排序。
2. 选择排序
选择排序也是一种简单的排序算法,它每次从未排序的数据中选出最小的一个数,并将它放到已排序的数据的末尾。
下面是选择排序的Java代码实现:
public static void selectionSort(int[] arr) {
int temp;
int len = arr.length;
for(int i=0; i<len-1; i++) {
int minIndex = i;
for(int j=i+1; j<len; j++) {
if(arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if(minIndex != i) {
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
在这个代码中,首先定义了一个临时变量temp,用于交换数据。然后,在外层循环中,我们从 个数据开始遍历数组,找出数组中最小的数,并将它交换到已经排好序的数据的最后面。在内层循环中,我们遍历剩余的数据,并判断它们是否比当前最小的数更小,如果是,则将这个数的下标保存到minIndex变量中。循环结束后,我们判断minIndex是否等于i,如果不等,则交换arr[i]和arr[minIndex]的值,将找到的最小值放到已排序数据的末尾。
3. 插入排序
插入排序是一种简单的排序算法,它的思路是将数据插入到已经排好序的数据之间。
下面是插入排序的Java代码实现:
public static void insertionSort(int[] arr) {
int temp;
int len = arr.length;
for(int i=1; i<len; i++) {
for(int j=i; j>0; j--) {
if(arr[j] < arr[j-1]) {
temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
} else {
break;
}
}
}
}
在这个代码中,我们首先定义了临时变量temp,用于交换数据。然后,在外层循环中,我们从数组的第二个数据开始遍历,将当前数据插入到它前面已经排好序的数据之间。在内层循环中,我们将当前数据与它前面的数据逐个比较,并将它们交换位置,直到找到合适的位置。循环结束后,当前数据就被插入到了已经排好序的数据之间。
4. 快速排序
快速排序是一种高效的排序算法,它采用“分治”思想,将数据分成两部分,一部分比另一部分小,然后分别对这两部分进行排序。
下面是快速排序的Java代码实现:
public static void quickSort(int[] arr, int left, int right) {
if(left < right) {
int i = left;
int j = right;
int key = arr[left];
while(i < j) {
while(i < j && arr[j] >= key) {
j--;
}
if(i < j) {
arr[i] = arr[j];
i++;
}
while(i < j && arr[i] < key) {
i++;
}
if(i < j) {
arr[j] = arr[i];
j--;
}
}
arr[i] = key;
quickSort(arr, left, i-1);
quickSort(arr, i+1, right);
}
}
在这个代码中,我们首先定义了三个变量i、j和key。变量key用于保存分界值,变量i用于记录左边比key小的数的个数,变量j用于记录右边比key大的数的个数。然后,在while循环中,我们逐个比较数组中的数,并将它们归到左边或右边。循环结束后,我们将key插入到中间位置,并递归地将左右两边的数据分别排序。
总结:
本文介绍了几种常用的排序算法及其Java实现,包括冒泡排序、选择排序、插入排序和快速排序。这些算法都是基本的排序算法,但它们的实现方式不同,对于不同的数据集合和应用场景,选择不同的排序算法是非常重要的。
