十大排序之Selection Sort 选择排序

简介: 十大排序之Selection Sort 选择排序

Selection Sort 选择排序

选择排序(Selection Sort)的思路是遍历待排序的数组,将当前位置视为最小值的索引。在剩余未排序部分中,循环并比较元素,找到最小值,并更新最小值的索引。将找到的最小值与当前位置交换。重复这两个循环,直到所有元素都被排序。

具体的插入排序算法步骤如下:

  1. 遍历待排序的数组,将当前位置视为最小值的索引。
  2. 在剩余未排序部分中,逐个比较元素,找到最小值,并更新最小值的索引。
  3. 将找到的最小值与当前位置交换。
  4. 重复步骤2-3,直到所有元素都被排序。
public class Sort {
    public static void insertionSort(int[] array) {
        int n = array.length;
        for (int i = 0; i < n-1; i++) {
            int minIndex = i;
            // 找到剩余未排序部分中的最小值索引
            for (int j = i + 1; j < n; j++) {
                if (array[j] < array[minIndex]) {
                    minIndex = j;
                }
            }
            // 将找到的最小值与当前位置的元素交换位置
            int temp = array[i];
            array[i] = array[minIndex];
            array[minIndex] = temp;
        }
    }
    public static void main(String[] args) {
        int[] array = {5, 2, 8, 12, 1, 6};
        insertionSort(array);
        System.out.println("排序结果:");
        for (int num : array) {
            System.out.print(num + " ");
        }
    }
}

选择排序的时间复杂度为O(n^2),其中n是待排序列表的元素个数。

空间复杂度为O(1),因为算法只需要常数级的额外空间来存储索引和临时变量。

由于选择排序在每次遍历中只进行一次交换,因此其交换操作相对较少,适用于较小规模的数组排序。然而,对于大规模数据集,选择排序的性能相对较差,更高效的排序算法如快速排序或归并排序更为适用。

相关文章
|
3月前
|
搜索推荐
冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析
冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析
42 1
|
8月前
|
搜索推荐 算法 Java
sort-03-SelectSort 选择排序算法详解
这是一个关于排序算法的系列文章摘要,包括了各种排序算法的介绍和Java实现。文章列举了冒泡排序、快速排序、选择排序、堆排序、插入排序、希尔排序、归并排序、计数排序、桶排序以及大文件外部排序的链接和简要说明。其中,选择排序算法被详细解释,它是通过找到未排序序列中的最小元素并将其放到正确位置来逐步构建有序序列的。Java实现中,选择排序的`doSort`方法通过两层循环实现,时间复杂度为`O(N^2)`,是稳定的排序算法。整个排序项目已开源在GitHub。
|
8月前
|
搜索推荐 算法 Java
sort-01-bubble sort 冒泡排序算法详解
这是一个关于排序算法的系列文章摘要。作者整理了10种不同的排序算法,包括冒泡排序、快速排序、选择排序、堆排序、插入排序、希尔排序、归并排序、计数排序、桶排序和大文件外部排序。文章详细介绍了冒泡排序的工作原理、流程,并提供了代码实现,强调了在实现中考虑的改进点,如统一接口、实用性增强和日志输出。此外,还提供了一个排序接口和工具类以方便使用,并通过测试代码和日志展示了排序过程。整个系列旨在帮助读者理解和掌握排序算法。相关代码已开源在GitHub。
|
存储 算法 搜索推荐
python实现【计数排序】(Count Sort)
python实现【计数排序】(Count Sort)
|
搜索推荐 算法 C#
C#选择排序(Selection Sort)算法
C#选择排序(Selection Sort)算法
|
人工智能 算法 搜索推荐
|
搜索推荐 算法 数据可视化
【基础篇】9 # 排序:冒泡排序(Bubble Sort)、插入排序(Insertion Sort)、选择排序(Selection Sort)
【基础篇】9 # 排序:冒泡排序(Bubble Sort)、插入排序(Insertion Sort)、选择排序(Selection Sort)
124 0
|
存储 搜索推荐
十大排序之Merge Sort 归并排序
十大排序之Merge Sort 归并排序
|
存储 搜索推荐
十大排序之Quick Sort 快速排序
十大排序之Quick Sort 快速排序
|
存储 搜索推荐
十大排序之Counting Sort 计数排序
十大排序之Counting Sort 计数排序

热门文章

最新文章