【笔记15】排序算法:选择排序和堆排序

简介: Java实现选择排序算法

一、选择排序(Selection Sort)思想

在这里插入图片描述

① 从序列中找出最大的那个元素与最末尾的元素交换位置(执行完一轮后,最末尾的那个元素是最大的元素)
② 忽略 ① 中找到的最大元素,重复执行步骤 ①

n - 1 次最大的元素(n 是元素个数)

二、代码实现

    public static void selectionSort(Integer[] ints) {
        // 找最大的元素与最末尾的交换位置
        for (int end = ints.length - 1; end > 0; end--) {
            int maxNumIdx = 0; // 假设第一个位置的元素就是整个序列中最大的
            for (int start = 1; start <= end; start++) { // 一趟选择排序(已经选出了一个最大的元素)
                if (ints[start] > ints[maxNumIdx]) {
                    maxNumIdx = start;
                }
            }
            // 把最大的元素和最末尾的元素交换
            int temp;
            temp = ints[maxNumIdx];
            ints[maxNumIdx] = ints[end];
            ints[end] = temp;
        }
    }

三、问题讨论

选择排序的交换次数要远远少于冒泡排序,平均性能优于冒泡排序。

一趟选择排序是在选择一个最大的元素(选最值

选最值可通过【堆】进行优化

相关文章
|
4天前
|
存储 算法 Java
技术笔记:JVM的垃圾回收机制总结(垃圾收集、回收算法、垃圾回收器)
技术笔记:JVM的垃圾回收机制总结(垃圾收集、回收算法、垃圾回收器)
|
5天前
|
机器学习/深度学习 算法 数据可视化
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
|
5天前
|
Java BI C#
技术笔记:SM4加密算法实现Java和C#相互加密解密
技术笔记:SM4加密算法实现Java和C#相互加密解密
|
5天前
|
存储 人工智能 算法
程序与技术分享:Acwing算法笔记
程序与技术分享:Acwing算法笔记
|
5天前
|
算法 安全 Java
技术笔记:MD5加密算法详解
技术笔记:MD5加密算法详解
|
5天前
|
移动开发 算法 计算机视觉
技术笔记:openCV特征点识别与findHomography算法过滤
技术笔记:openCV特征点识别与findHomography算法过滤
|
5天前
|
搜索推荐 算法 Java
Java数据结构与算法:排序算法之选择排序
Java数据结构与算法:排序算法之选择排序
|
5天前
|
算法 搜索推荐 Java
Java数据结构与算法:排序算法之堆排序
Java数据结构与算法:排序算法之堆排序
|
8天前
|
搜索推荐 算法
【C/排序算法】:堆排序和选择排序
【C/排序算法】:堆排序和选择排序
7 0
|
11天前
|
算法 Python
数据结构算法--4堆排序
堆排序过程概述:建立大根堆,将堆顶最大元素移出并替换为末尾元素,调整保持堆性质,重复此过程直至堆为空,实现排序。时间复杂度为O(nlogn)。Python中可用heapq模块进行堆操作。