本文介绍: 当然,选择排序只是一种基础的排序算法,对于更复杂排序任务需要使用更加高效的排序算法,以提高排序速度效率。只要排序 外层 循环 i=( 0~ n-1 ) (n>0) 定义maxindex 最大索引默认为0 内层循环j 1到 n-i 比较次数。如果 这个找到max的值不等于 当前末尾的值 也就是 n-i-1;可能关键字不同对应的是不同视频 搜索,排序是算法必备的。

引言

说起排序算法,那可就多了去,首先了解什么叫排序
以B站为例
在这里插入图片描述
徐坤在B站很受欢迎呀,先来看一下综合排序 就是播放量和弹幕量,收藏一键三连 都很高这是通过一些排序算法 才能体现出综合排序

在这里插入图片描述
徐坤鬼畜 按照播放量来看最高的进行排序,当然也可以按照搜索结果来进行排序
关键字对于搜索结果而言非常重要 提供关键字找到对应视频 在根据关键字对应的视频排序

可能关键字不同对应的是不同的视频 搜索,排序是算法必备的
同时,还可以考虑用户的个性化推荐,根据用户的观看历史、搜索历史、点赞评论行为数据利用机器学习算法进行推荐。这样可以精准推荐用户感兴趣的蔡徐坤鬼畜视频,并提高用户满意度和留存率。

所以排序有非常多种,此时想必疑惑,“这和选择排序有什么关系呢?” 当然有关系。
选择排序是一种简单的排序算法,可以应用到蔡徐坤鬼畜视频排序中。例如可以根据视频的播放量或者点赞数进行选择排序,按照从大到小的顺序排列视频,从而让用户更容易找到热门的、受欢迎的蔡徐坤鬼畜视频。当然,选择排序只是一种基础的排序算法,对于更复杂的排序任务需要使用更加高效的排序算法,以提高排序的速度效率

选择排序思路

在这里插入图片描述
一共是7个数元素
只要排序 外层 循环 i=( 0~ n-1 ) (n>0) 定义maxindex 最大索引默认为0 内层循环j 1到 n-i 比较次数
n-i当前还有多少未排序的元素
n-i-1:当前已排序序列最后一个元素索引

第一次外层循环
i=0
max=0
第一次内层循环
j=1 j<7-i;
如果 115> 165
j++
直到 j=5 更新maxindex=j
max此时=5
内层 循环遍历结束
如果 这个找到的max的值不等于 当前末尾的值 也就是 n-i-1; 交换数组对应的位置 交换
第一次外层循环结束

外层循环开始。i代表当前已排序序列长度(因为每次排序后,i会+1)。外层循环从0开始,到size – 2结束,共进行size – 1次循环。
初始化最大值索引为0,因为假设第一个元素是当前未排序元素中的最大值
内层循环开始。j代表当前未排序序列长度内层循环从0开始,到size – i – 1结束,每次循环中都寻找未排序序列中最大值
如果当前元素大于当前认为的最大值,那么更新最大值的索引
内层循环结束后,我们得到了未排序元素中的最大值的位置
如果最大值的索引等于size – i – 1),说明最大不在正确的位置上,需要交换
交换最大值和最后一个已排序元素的位置。
重复上述步骤,直到所有元素都已排序。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这是每次排序的结果
在这里插入图片描述

选择排序算法专区

// 定义一个函数 SelectSort,它接受一个整数数组 arr数组大小 size,和一个比较函数 cmp 作为参数  
void SelectSort(int arr[], int size,bool(*cmp)(const int &,const int &)) {  
  
    // 如果传入的比较函数是空指针直接返回,不做任何操作  
    if (cmp == nullptr) {  
        return;  
    }  
  
    // 开始循环,从数组第一个元素到倒数第二个元素(i 从 0 到 size-2)  
    for (int i = 0; i < size-1; i++){  
  
        // 初始化最大最小元素的索引为 0  
        int MaxorMinindex = 0;  
  
        // 从数组第二个元素开始,到倒数第三个元素(j 从 1 到 size-i-1)  
        for (int j = 1; j < size-i; j++){  
  
            // 使用比较函数 cmp判断 arr[j] 是否大于或小于 arr[MaxorMinindex],如果小于或等于,更新 MaxorMinindex 为 j  
            if (cmp(arr[j],arr[MaxorMinindex])) {  
                MaxorMinindex = j;  
            }  
        }  
  
        // 如果 MaxorMinindex 不等于 size - i - 1(也就是当前未排序部分最后一个元素的索引),交换 arr[MaxorMinindex] 和 arr[size - i - 1] 的值  
        if (MaxorMinindex != size - i - 1) {  
            swap(arr[MaxorMinindex], arr[size - i - 1]);  
        }  
    }  
}  
  
// 定义一个函数 lessCmp,接受两个整数作为参数,如果第一个整数小于第二个整数返回 true,否则返回 false  
bool lessCmp(const int&amp; val1, const int &amp;val2) {  
    return val1 < val2;  
}  
  
// 定义一个函数 GreaterCmp,接受两个整数作为参数,如果第一个整数大于第二个整数返回 true,否则返回 false  
bool bool GreaterCmp(const int&amp; val1, const int &amp;val2) {

	return val1 &gt; val2;
}

原文地址:https://blog.csdn.net/xiaov_sen/article/details/134728524

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_43818.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注