十大排序之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),因为算法只需要常数级的额外空间来存储索引和临时变量。

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

相关文章
|
1月前
|
搜索推荐
冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析
冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析
14 1
|
6月前
|
搜索推荐 算法 Java
sort-03-SelectSort 选择排序算法详解
这是一个关于排序算法的系列文章摘要,包括了各种排序算法的介绍和Java实现。文章列举了冒泡排序、快速排序、选择排序、堆排序、插入排序、希尔排序、归并排序、计数排序、桶排序以及大文件外部排序的链接和简要说明。其中,选择排序算法被详细解释,它是通过找到未排序序列中的最小元素并将其放到正确位置来逐步构建有序序列的。Java实现中,选择排序的`doSort`方法通过两层循环实现,时间复杂度为`O(N^2)`,是稳定的排序算法。整个排序项目已开源在GitHub。
|
6月前
|
搜索推荐 算法 Java
sort-05-insert sort 插入排序算法详解
这是一个关于排序算法的系列文章总结,包括冒泡排序、快速排序、选择排序、堆排序、插入排序等10种排序算法的详细讲解和Java实现。插入排序是一种简单直观的排序算法,通过构建有序序列并逐个插入新元素来排序。提供的Java代码展示了插入排序的实现过程,并附有测试示例。所有算法已开源在GitHub项目[https://github.com/houbb/sort](https://github.com/houbb/sort)中。
|
6月前
|
搜索推荐 算法
Sort-00-十大排序算法汇总
这是一个关于排序算法的系列文章总结,包括冒泡、选择、插入、归并、快速、堆、希尔、计数、桶和基数排序的详细讲解。十大排序算法各有特点,如冒泡排序适合小规模或基本有序的数据,快速排序在大规模随机数据中表现优秀。时间复杂度和空间复杂度各不相同,选择时需根据数据特性与应用场景权衡。
|
6月前
|
搜索推荐 数据库 C++
带用排序等法sort讲解
带用排序等法sort讲解
35 0
|
搜索推荐 C++
C++利用sort进行排序
C++利用sort进行排序
|
6月前
|
C++
C++如何进行sort的使用——C++如何进行排序
C++如何进行sort的使用——C++如何进行排序
93 0
|
存储 算法 搜索推荐
python实现【计数排序】(Count Sort)
python实现【计数排序】(Count Sort)
python实现【计数排序】(Count Sort)
|
搜索推荐 算法 C#
C#选择排序(Selection Sort)算法
C#选择排序(Selection Sort)算法
|
人工智能 算法 搜索推荐