首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何用Java集合链表实现选择排序算法?

选择排序是一种简单但低效的排序算法,它的基本思想是从未排序的元素中选择最小(或最大)的元素,将其与未排序部分的第一个元素交换位置,直到所有元素都被排序。

要使用Java集合链表实现选择排序算法,可以按照以下步骤进行:

  1. 创建一个LinkedList对象来存储待排序的元素。
  2. 使用add方法将待排序的元素添加到LinkedList中。
  3. 创建一个for循环,循环次数为LinkedList的大小减一,因为最后一个元素无需比较。
  4. 在每次循环中,记录当前循环的起始位置为最小元素的索引。
  5. 在当前循环中,创建一个内层for循环,循环变量从当前循环位置的下一个元素开始,直到LinkedList的末尾。
  6. 在内层循环中,通过比较当前元素与最小元素的值,更新最小元素的索引。
  7. 在内层循环结束后,如果最小元素的索引不等于当前循环的起始位置,则将最小元素与起始位置的元素进行交换。
  8. 循环结束后,LinkedList中的元素将按照从小到大的顺序排序。

以下是用Java集合链表实现选择排序算法的示例代码:

代码语言:txt
复制
import java.util.LinkedList;

public class SelectionSort {
    public static void selectionSort(LinkedList<Integer> list) {
        int size = list.size();
        
        for (int i = 0; i < size - 1; i++) {
            int minIndex = i;
            
            for (int j = i + 1; j < size; j++) {
                if (list.get(j) < list.get(minIndex)) {
                    minIndex = j;
                }
            }
            
            if (minIndex != i) {
                int temp = list.get(i);
                list.set(i, list.get(minIndex));
                list.set(minIndex, temp);
            }
        }
    }
    
    public static void main(String[] args) {
        LinkedList<Integer> list = new LinkedList<>();
        list.add(5);
        list.add(2);
        list.add(8);
        list.add(1);
        list.add(3);
        
        System.out.println("Before sorting: " + list);
        selectionSort(list);
        System.out.println("After sorting: " + list);
    }
}

这段代码使用LinkedList存储待排序的元素,并实现了一个名为selectionSort的方法来进行选择排序。在main方法中,我们创建了一个LinkedList对象,并添加了一些整数元素。然后,我们打印出排序前的LinkedList,调用selectionSort方法对其进行排序,并再次打印出排序后的结果。

需要注意的是,这只是一个基于LinkedList的选择排序算法示例,实际应用中可能会使用效率更高的数据结构和算法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

排序算法Java代码实现(一)—— 选择排序

以下几篇随笔都是记录的我实现八大排序的代码,主要是贴出代码吧,讲解什么的都没有,主要是为了方便我自己复习,哈哈,如果看不明白,也不要说我坑哦!...本片分为两部分代码: 常用方法封装 排序算法里需要频繁使用 交换数组中两数位置 的操作,另外,为了方便我打印数组查看结果,我封装一个 ArrayBase.java基类,用来实现swap...方法和printArray方法; 选择排序算法 (一)ArrayBase.java /** * */ package com.cherish.SortingAlgorithm; /** * @...System.out.print(array[i] + "\t"); } System.out.println(); } } (二)选择排序算法...再从数组剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置。 不断进行这样的操作,直到将整个数组排序

71740
  • 排序算法选择排序-java

    选择排序 1.1 选择排序的基本介绍 选择排序类似于冒泡排序,均属于内排,也可以看做是对冒泡排序的优化。因为冒泡排序是比较相邻的两个值,然后直接交换。...而选择排序是找到一个最大值或者最小值之后,再进行交换。...1.2 选择排序思想 第一次从 arr[0] ~ arr[n-1]中选择一个最大值或者最小值,与 arr[0] 交换;第二次从 arr[1] ~ arr[n-1]中选择一个最大值或者最小值,与 arr[...1] 交换; 第二次从 arr[2] ~ arr[n-1]中选择一个最大值或者最小值,与 arr[2] 交换; 依次类推。...1.3 选择排序的时间复杂度和空间复杂度等 算法名称 平均时间复杂度 最好情况 最坏情况 空间复杂度 稳定性 选择排序 O(n^2) O(n) O(n^2) O(1) 稳定 2.

    83120

    Java常见排序算法详解——选择排序

    转载请注明出处:https://www.jianshu.com/p/43981d777731 选择排序Simple Selection Sort 概念: 是一种简单直观的排序算法。...选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。...选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的序列进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。...代码实现: /** * @author yangzc * @data 2019/4/8 23:37 * @desc 选择排序 */ public class SelectSort { private...: 冒泡排序 代码: Java和Kotlin代码我均放在了GitHub上,欢迎Star!

    62300

    算法图解》NOTE 2 数组、链表选择排序1.数组2.链表3.选择排序

    这是《算法图解》的第二篇读书笔记,内容主要涉及数组、链表选择排序。 1.数组 1.1定义 作为一种基础的数据结构,数组指的是n个元素按照索引号依次存放在一个内存区域的数据结构。...即可根据索引号访问与之对应的元素,从而实现快速访问数组中的元素。 1.2.2缺点 (1)删除、插入元素慢。若要删除或插入元素,则需移动制定元素后面的所有元素。 (2)有溢出的可能。...2.链表 2.1定义 一种基础数据结构,每个元素除了记录自身的值,还会记录下一个元素的内存地址。 2.2优缺点 2.2.1优点 支持快速插入、删除元素。插入、删除元素的操作简单。...3.选择排序法 3.1实现原理 遍历其全部元素,找出其最大(最小)的元素。将其从原来的数组中移至新的数据结构中。...3.2代码实例 #演示选择排序法 import random #选择数组中最小的元素 def select_smallest(arr): value=float('inf') idx=

    37230

    选择排序算法(C语言实现

    这个程序就是选择排序算法。...引用选择排序算法百度百科 简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;...以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。...以下为简单选择排序的存储状态,其中大括号内为无序区,大括号外为有序序列: 初始序列:{2 4 7 1 6 9 8 3 0 5}    第1趟:2与0交换:0{4 7 1 6 9 8 3 2 5}   ...冒泡排序可以查看点击,非常抱歉的是这个里面是冒泡排序的裸代码,查看代码其实可以体会到冒泡排序本质是:排序的数像水泡一样,依次比较,大的数往后移,最后大的数排在最后。

    1.6K20

    java五大排序算法选择排序

    一.选择排序介绍 选出最小的一个数与第一个位置的数交换 二.选择排序原理分析 第1趟比较:拿第1个元素依次和它后面的每个元素进行比较,如果第1个元素大于后面某个元素,交换它们,经过第1趟比较,数组中最小的元素被选出...第n-1趟比较:第n-1个元素和第n个元素作比较,如果第n-1个元素大于第n个元素,交换它们 三.选择排序代码实现 public static void selectionSort(int[] nums...swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } 四.选择排序的优化...} // 交换两个数 temp = numbers[i]; numbers[i] = numbers[k]; numbers[k] = temp; } } 五.选择排序的时间复杂度...时间复杂度:O(n²) 空间复杂度:O(1),只需要一个附加程序单元用于交换 稳定性:选择排序是不稳定的排序算法,因为无法保证值相等的元素的相对位置不变,例如 [3, 4, 3, 1, 5]这个数组

    20830

    JAVA实现常见排序算法 快速排序

    欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。...基本思想:用选取的初始值(一般是第一个)将待排序序列分为小于初始值和大于初始值的两部分,然后重复此操作,最终到排序完成。...该算法是一个不稳定的算法(如果待排序序列中存在相同的元素,经过排序后他们的相对位置不发生改变那么这个算法就是稳定的排序算法) 空间复杂度最坏为O(n),平均 ?...Java实现: public static int[] quickSort(int[] n, int low, int high) { int lowMark = low, highMark...} //将记录值写到最后低位指针的位置 n[lowMark] = record; //两边分别进行排序操作

    81620

    冒泡排序-选择排序-插入排序-快速排序java实现

    排序就是将输入的数字按照从小到大的顺序进行排列。由于排序是一个比较基础的问题,所以排序算法的种类也比较多。最近学习了几种常见的排序算法,下面介绍如何使用java代码实现对数组进行从下到大排序。...,循环操作,在这个过程中,数字会像泡泡一样,慢慢从左往右“浮”到序列的右端,所以这个算法才被称为“冒泡排序”。...1、概念 快速排序要比上面几个排序难度大些了,排序的效率也更高,实现方式就是在数组中找一个基准数,将大于基准数的值放到基准数右边,小于的放到左边,然后将小于基准数的左边序列再次选择一个基准数...,大于基准数的右边序列也再次选择一个基准数,循环执行上述操作,只到子序列都剩一个数字时,停止循环,此时排序成功。...java实现

    25920

    js实现常用排序算法 --冒泡排序,选择排序, 插入排序,快速排序,

    JavaScript实现十大常用排序算法 冒泡排序 选择排序 插入排序 快速排序 归并排序 希尔排序排序 计数排序排序 计数排序 冒泡排序: 原理 选择排序: 原理: 第一次从待排序的数据元素中选出最小...(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。...以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。...代码如下: // 使用选择排序 const selectSort = (arr) => { let len = arr.length let minIndex,temp for(let i...) 执行结果如下 插入排序 原理: 每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

    2K20

    排序算法Java代码实现(五)—— 快速排序

    本篇内容: 快速排序 快速排序 算法思想: 通过一趟排序将要排序的数据分割成独立的两部分, 其中一部分的所有数据都比另外一部分的所有数据都要小, 然后再按此方法对这两部分数据分别进行快速排序, 整个排序过程可以递归进行...代码实现:(递归) /** * */ package com.cherish.SortingAlgorithm; /** * @author acer * */ public class...quickSorting(array,0,array.length-1); printArray(array); } /* * 通过一趟排序将要排序的数据分割成独立的两部分..., * 其中一部分的所有数据都比另外一部分的所有数据都要小, * 然后再按此方法对这两部分数据分别进行快速排序, * 整个排序过程可以递归进行,以此达到整个数据变成有序序列...list[high] = list[low]; } list[low] = temp; return low; } } 实现结果

    1.8K20

    Java数据结构和算法总结-冒泡排序选择排序、插入排序算法分析

    前言:排序算法中的地位自然不必多说,在许多工作中都用到了排序,就像学生成绩统计名次、商城商品销量排名、新闻的搜索热度排名等等。...也正因为排序的应用范围如此之广,引起了许多人深入研究它的兴趣,直至今天,排序算法已经出现了很多种。...本篇博文主要介绍常见的八种排序算法,总得来说,不同的排序算法在不同的场景下都有着自己独特的优点,例如一下简单的冒泡排序选择排序、插入排序不仅思路简单,有利于我们理解,而且在小规模的数据量的处理中并不逊色...选择排序的一趟排序过程示意图(非排序全程): ?   ...简单排序 选择排序 O(N^2) 速度比冒泡快。 简单排序 插入排序 O(N^2) 速度是冒泡的二倍,优于选择排序,在基本有序的数据中表现出色。 简单排序

    97790

    排序算法Java代码实现(六)—— 堆排序

    本片内容: 堆排序排序 最大堆: 二叉堆是完全二叉树或者是近似完全二叉树,   当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。...(父节点大于任何一个子节点) 算法思想: 把n个元素建立最大堆,把堆顶元素A[0]与待排序序列的最后一个数据A[n-1]交换; 把剩下的n-1个元素重新建立最大堆,把堆顶元素A[0]与待排序序列的最后一个元素...A[n-2]交换; 把剩下的n-2个元素重新建立最大堆,把堆顶元素A[0]与待排序序列的最后一个元素A[n-3]交换; 重复以上步骤,直到把最后两个元素建成最大堆并进行交换,得到的序列就是排序后的有序序列...代码实现: /** * */ package com.cherish.SortingAlgorithm; /** * @author acer * */ public class Chapter...while循环 break; } } } } } 实现结果

    85320
    领券