首页 > 编程语言 >【排序算法】直接选择排序

【排序算法】直接选择排序

时间:2023-03-14 16:47:51浏览次数:32  
标签:arr String int 外层 选择 索引 算法 排序

1  前言

今天把排序的几个算法过一下,这节我们看一下直接选择排序,简单的来说就是默认某个位置为最小然后从位置后的元素逐个比较进行交换,我们看示例。

2  代码示例

/**
 * 直接选择排序
 * 直接选择相当于直接把第 i 个看作是最大或者最小,然后依次跟后边的每个元素进行比较,比我小的就跟我交换一下
 * 假设待排序的数量为:n
 * 要考虑的是:
 * 1、还是需要 n-1 轮
 * 2、因为首先我们要从第一个(也就是索引为 0) 的开始,那么外层循环就是 0 -> n-1
 *    内层循环就从 外层索引+1的位置开始到最后一个
 */
public static void selectSort(int[] arr) {
    // 外层循环既是直接选择的索引位置 也是要进行的轮数
    for (int i = 0; i < arr.length - 1; i++) {
        // 内层循环从外层索引 + 1 的位置开始到最后一个
        for (int j = i+1; j < arr.length; j++) {
            // 升序,比我小的就跟我换位置
            if (arr[j] < arr[i]) {
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
}
public static void main(String[] args) {
    int[] arr = IntStream.generate(() -> ThreadLocalRandom.current().nextInt(10000)).limit(10000).toArray();
    System.out.println("排序前:" + Arrays.stream(arr).mapToObj(String::valueOf).collect(Collectors.joining(",")));
    selectSort(arr);
    System.out.println("排序后:" + Arrays.stream(arr).mapToObj(String::valueOf).collect(Collectors.joining(",")));
}

3  小结

有写的不对的地方,欢迎指正哈。

标签:arr,String,int,外层,选择,索引,算法,排序
From: https://www.cnblogs.com/kukuxjx/p/17215417.html

相关文章

  • 算法-练习2
    题1给你两个 非空的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表......
  • 笔试算法《字符串排序_1》
    题目描述编写一个程序,将输入字符串中的字符按如下规则排序。规则1:英文字母从A到Z排列,不区分大小写。如,输入:Type输出:epTy规则2:同一个英文字母的大小写同时存在时,......
  • Steam流中的sorted方法排序
    使用方法packagecom.sports.basketball.controller.dto;importjava.util.ArrayList;importjava.util.Comparator;importjava.util.List;importjava.util.stream.Col......
  • less & saas/scss & css 深度选择器语法在 Vue2 & Vue3中的使用
    vue2中原生css>>>.el-card__header saas\scss::v-deep.el-card__headerless/deep/.el-card__header vue3中:deep(){......
  • [思维提升|干货All in]6种算法解决LeetCode困难题:滑动窗口最大值
    为了更好的阅读体验,欢迎阅读原文:[思维提升|干货Allin]6种算法解决LeetCode困难题:滑动窗口最大值(eriktse.com)最近在leetcode遇到一道非常经典的题目:239.滑动窗口最......
  • 32位汇编语言实现冒泡排序
    INCLUDEIrvine32.inc.dataarrdd99,2,3,1,22,88,7,77,54;定义数组lendd($-arr)/4;定义数组的长度变量.codemainPROCmovedx,offsetarr......
  • Tarjan算法详解
    Tarjan算法介绍TarjanTarjan算法是用于在有向图中求强连通分量的算法这里给出强连通分量的定义:有向图中一个最大的图,使这个图中每个两点都能够互相到达。这个最大的图称......
  • HTML中选择器的权重
    -什么是样式冲突?-当我们通过不同的选择器,选中相同的元素,并且为相同的样式设置不同的值时,此时就发生了样式的冲突-发生样式冲突时,应用哪个样式应......
  • 决策树算法
    fromsklearnimporttreefromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitimportnumpyasnpif__name__=="__main__":......
  • k近邻算法
    如果一个样本在特征空间中的k个最“相似”(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别相似度:即两个点的距离来衡量距离越近越近相似度......