欢迎访问宙启技术站
智能推送

使用Java函数实现排序算法(冒泡排序,快速排序等)

发布时间:2023-06-07 06:45:09

排序算法是计算机科学中最常用的算法之一。在编程中,需要对大量的数据进行排序,例如在数据库检索中,需要将数据按照某种条件进行排序,以便更快更方便地查找。在本文中,我们将介绍一些常用的排序算法及其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实现,包括冒泡排序、选择排序、插入排序和快速排序。这些算法都是基本的排序算法,但它们的实现方式不同,对于不同的数据集合和应用场景,选择不同的排序算法是非常重要的。