`
famoushz
  • 浏览: 2962934 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

比较排序算法——选择排序(Selection Sort)

阅读更多


  选择排序的基本思想是对待排序的记录序列进行n-1遍的处理,第i遍处理是将L[i..n]中最小者与L[i]交换位置。这样,经过i遍处理之后,前i个记录的位置已经是正确的了。

  选择排序算法可实现如下:

  procedure Selection_Sort(var L:List);
  var
  i,j,s:position;
  begin
  1  for i:=First(L) to Last(L)-1 do
      begin
  2   s:=i;
  3   for j:=i+1 to Last(L) do
  4     if L[j]< L[s] then
  5     s:=j;             //记录L[i..n]中最小元素的位置
  6   swap(L[i],L[s]);       //交换L[i],L[s]
   end; 
  end;

  算法Selection_Sort中里面的一个for循环需要进行n-i次比较,所以整个算法需要


  次比较。

  显而易见,算法Selection_Sort中共调用了n-1次swap过程。选择排序法是一个原地置换排序法,也是稳定排序法。

分享到:
评论

相关推荐

    常用排序算法——冒泡 选择 插入 快速

    排序算法之冒泡、选择、插入、快速排序 在计算机科学中,排序算法是最基本也是最重要的算法之一。排序算法的主要任务是将一个无序的数据序列转换为一个有序的数据序列。常用的排序算法有冒泡排序、选择排序、插入...

    排序算法总结——最全、最新的排序算法

    排序算法总结——最全、最新的排序算法 本文对各种排序算法进行了总结,包括插入排序、选择排序、冒泡排序、快速排序和堆排序等。下面是对每种排序算法的详细介绍: 一、插入排序(Insertion Sort) 插入排序是一...

    多个排序算法的比较————C++

    通过比较这些算法,我们可以了解到每种排序方法的优缺点,以及在不同场景下如何选择合适的排序算法。 在压缩包中的"多个排序算法比较—C++"文件中,你可以找到上述排序算法的C++代码实现,这对于理解算法的工作原理...

    Java中的经典算法之选择排序(SelectionSort).zip_java_java编程

    本主题将深入探讨一种简单直观的排序算法——选择排序(Selection Sort)。选择排序的思想是通过多轮比较,每次找出未排序部分的最小(或最大)元素,并将其放置在已排序部分的末尾,直到所有元素都被正确地排列。 **...

    8种排序算法(选择排序 冒泡排序 快速排序等~)

    这里有8种常见的排序算法,包括选择排序、冒泡排序和快速排序等。这些算法各有特点,适用于不同的场景,理解并掌握它们对于编程和数据处理至关重要。 1. **选择排序(Selection Sort)** 选择排序是一种简单直观的...

    java语言排序——选择排序法和冒泡排序法(排序时间的测试盒比较)

    本文将深入探讨两种基本的排序算法:选择排序和冒泡排序,并通过实际代码实现和时间复杂度分析进行比较。 选择排序是一种简单直观的排序算法。它的基本思想是,在未排序的序列中找到最小(或最大)的元素,存放到...

    C#实现所有经典排序算法

    这里我们将详细探讨两种简单排序算法——选择排序和冒泡排序,以及一种更高效的排序算法——快速排序。 1. **选择排序(Selection Sort)** 选择排序是一种简单直观的排序算法。它的基本思想是在未排序序列中找到...

    对数组进行 选择排序法——C语言代码

    **选择排序法是一种简单直观的排序算法,它的工作原理如下:** 在待排序的数组中,首先找到最小(或最大)的元素,将其放在数组的起始位置。然后,再从剩余未排序的元素中继续寻找最小(或最大)的元素,然后放到已...

    排序算法(Java描述)

    本文将深入探讨两种经典的排序算法——选择排序和插入排序,并通过Java语言进行具体描述,旨在帮助读者理解这两种算法的工作原理、时间复杂度以及实际应用。 #### 选择排序:效率与简洁性的权衡 选择排序是一种简单...

    第03章 方法与数组 08 选择排序算法

    6. **比较与其他排序算法**: - 与冒泡排序相比,选择排序在平均情况下速度更快,但最坏情况下的时间复杂度都是O(n^2)。 - 相比于快速排序、归并排序等高效排序算法,选择排序在处理大数据量时性能明显不足。 总...

    算法与数据结构课程设计——排序

    《算法与数据结构课程设计——排序》 在计算机科学中,排序是处理数据的重要操作,尤其是在数据分析、数据库管理和算法效率优化等领域。本课程设计主要涵盖了五种常见的排序算法:冒泡排序、直接插入排序、简单选择...

    几种排序算法整理

    首先,让我们从最经典的排序算法——冒泡排序(Bubble Sort)开始。冒泡排序通过不断地交换相邻的不正确顺序的元素来逐步排序数组。它的主要步骤是遍历数组,比较每对相邻元素,如果顺序错误就交换它们。这个过程会...

    数据结构算法源代码(插入排序和选择排序)

    在本文中,我们将深入探讨两种基础且重要的排序算法——插入排序和选择排序。这两种排序算法在数据结构和算法的学习中占据着核心地位,因为它们帮助初学者理解排序的基本原理。 首先,我们来看**插入排序...

    数据结构六种内部算法排序比较

    根据给定文件的信息,本文将对六种不同的排序算法——冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序以及堆排序——进行详细分析,并比较它们之间的性能差异。 ### 冒泡排序(Bubble Sort) 冒泡排序...

    c#各种排序算法动态图形演示-数据结构经典算法动态演示

    在C#中,可以使用内置的`Array.Sort()`或`List&lt;T&gt;.Sort()`方法,它们内部使用了高效的排序算法,如TimSort(一种混合了插入排序、归并排序和双路插入排序的稳定排序算法),但在需要自定义排序规则或者理解算法工作...

    《Java数据结构和算法》学习笔记(2)——4种简单排序算法

    本文将深入探讨四种简单的排序算法:插入排序、冒泡排序、选择排序。这些算法虽然在复杂度上不如高级排序算法如快速排序或归并排序,但它们提供了基础的排序逻辑,有助于理解更复杂的算法思想。 首先,我们来详细...

    排序算法_java

    本文将深入探讨标题和描述中提及的五种经典排序算法——插入排序、归并排序、选择排序、冒泡排序和希尔排序,以及它们在Java中的实现。 1. 插入排序(Insertion Sort) 插入排序是一种简单直观的排序算法,它的工作...

    内部排序算法比较课程设计汇本报告(7种基本排序).doc

    报告中提到的数据结构——可排序列表(OrderableList),定义了一组基本操作,如初始化、随机化、恢复排序、获取长度、检查是否为空,以及针对每种排序算法的操作,这些操作提供了实现和比较排序算法的框架。...

    C++常用排序算法

    以上介绍了三种常用的排序算法——选择排序、双路选择排序及冒泡排序,在C++中的实现方式。这些排序算法各有优缺点,例如选择排序简单但效率不高;而双路选择排序和冒泡排序则通过优化减少了不必要的比较次数,提高...

Global site tag (gtag.js) - Google Analytics