首页 > 其他分享 >选择排序以及 TopN 问题

选择排序以及 TopN 问题

时间:2023-11-20 23:58:28浏览次数:39  
标签:min int len 选择 TopN 排序 data

选择排序

选择排序是把最大或最小的元素放到最边上,然后不断重复以上过程。堆排序也是如此,只不过堆排序通过构建数据结构,让查找最大或最小元素并放到最边上的速度比选择排序快得多。

选择排序实现

void SelectSort(std::vector<int> &data, int len) {
    if (len == 0) {
        return;
    }
    for (int i = 0; i < len - 1; ++i) { // 为前 len-1 个位确定合适的key
        int min = i;
        for (int j = i + 1; j < len; ++j) { // 从无序集合中选出一个最小的index
            if (data[j] < data[min]) {
                min = j;
            }
        }
        if (min != i) { // 把这个最小的 key 放在当前需要确定的 slot 上
            swap(data[min], data[i]);
        }
    }
}

// 时间复杂度 O(n^2)
// 空间复杂度 O(1)
// 稳定的排序

TopN 问题

标签:min,int,len,选择,TopN,排序,data
From: https://www.cnblogs.com/qwerty-ll/p/17845219.html

相关文章

  • 今天复习了一遍快速排序
    #include<iostream>usingnamespacestd;#include<stdio.h>constintN=10e6+10;intn;intq[N];voidquick_sort(intq[],intl,intr){if(l>=r)return;intx=q[l];inti=l-1;intj=r+1;while(i<......
  • 归并排序知识总结
    归并排序思维导图:知识点:如果原序列中两个数的值是相同的,它们在排完序后,它们的位置不发生变化,那么这个排序是稳定的。快速排序是不稳定的,归并排序是稳定的。快排变成稳定的=>使快排排序数组中的每个数都不同,将ai变成<ai,i>这个二元组,将ai的下标也放进来,使用双关键字排序。快速......
  • JAVA冒泡排序
    //冒泡排序publicclassDemo05{publicstaticvoidmain(String[]args){int[]arr={4,1,5,2,3};for(inti=0;i<arr.length-1;i++){//外循环:控制比较轮数(数组长度-1)i:0,1,2,3for(intj=0;j<arr.length-1......
  • List 函数排序操作,用对方法事半功倍!
    作为一名程序员,以下这些场景你肯定不陌生,1.数据分析和处理:在处理大量数据时,需要对数据进行排序以进行进一步的分析和处理。例如,在市场调研中,可能需要按照客户的购买频率对客户列表进行排序,以确定哪些客户最有可能购买产品或服务。2.报表生成:在生成报表时,往往需要按照特定的顺序对......
  • CSS选择器
    CSS选择器是用来选择需要改变样式的HTML元素的模式。到CSS3为止,支持的选择器类型有6种,包括标签选择器、派生选择器(上下文选择器)、id选择器、class选择器、属性选择器和通配符*选择器。以下是这六种选择器的简要介绍:标签选择器:通过HTML元素的标签名来选择元素。派生选择器(上下文选择......
  • 为什么说SaaS模式的CRM系统是更好的选择?
     在以前,CRM系统只有本地部署一个选择。但近年来,SaaS模式CRM逐渐火热。SaaS模式CRM系统联网即可访问,不需要用户在自己的服务器上安装和运行,通过订阅的方式即可获得服务。下面说说,选择SaaS模式CRM系统的理由。1、费用更低使用SaaS模式CRM系统,只需要支付账号费用,就可以通过浏览......
  • 视频直播源码,图片选择器ImagePicker
    视频直播源码,图片选择器ImagePicker引入 gradleallprojects{  repositories{    maven{url'https://jitpack.io'}  }}implementation'com.github.DL-ZhangTeng:ImagePicker:1.5.0'//使用的三方implementation'com.github.bumptech.glide:glide:4.1......
  • 安装算量软件哪个好用_如何选择安装算量软件
    随着科技的飞速发展,安装算量软件已经成为建筑行业不可或缺的工具。然而,面对市场上琳琅满目的产品,许多用户可能会感到困惑:哪个安装算量软件最好用呢?本文将为您详细介绍鹏业安装算量软件的优势特点,帮助您轻松解决这一难题。一、智能化的数据处理能力鹏业安装算量软件依托强大的数据处......
  • C++U3-第1课-基础排序(一)
    学习目标排序的概念  本阶段会学习的排序有 冒泡排序概念 第一轮比较,与交换 例题1:一趟交换 例题2:多躺比较,冒泡排序 【题意分析】进行n-1趟冒泡排序的过程,每一次输出当前一趟冒泡排序完的结果【思路分析】定义一个n,输入当前的n和储存n个数的数组for......
  • [oeasy]python001_先跑起来_python_三大系统选择_windows_mac_linux
    先跑起来......