`
java-mans
  • 浏览: 11339601 次
文章分类
社区版块
存档分类
最新评论

排序算法之选择排序(Selection Sort)

 
阅读更多

选择排序

1.伪代码
对于初始n个元素的数列a[1...n]
选择排序实现的伪代码如下:

for i = 1 : n
      k = i
      for  j = i + 1 : n, 
             if a[j] < a[k]
                  k = j
       ->a[k]是a[i...n]中最小的元素
       交换a[i], a[k]
      -> 排好序的元素:a[1...i]
end 


2. 算法过程
初始无序数列:5, 2, 3, 1, 4
i = 1
[
k = 1
j = 2
因为 a[j] < a[k]
所以 k = j

k = 2
j = 3
因为 a[j] > a[k]
所以 k不变

k = 2
j = 4
因为 a[j] < a[k]
所以 k = j

k = 4
j = 5
因为 a[j] > a[k]
所以k不变
]
a[i]与 a[k]交换
最后结果为:1, 2, 3, 5, 4

i = 2
[
过程和上面类似
]

3.算法特性
非稳定的。
空间复杂度:O(1)
时间复杂度:比较的次数,O(n^2);交换的次数O(n)


4.总结
选择排序算法的优点是交换的次数是最小的,因此对于交换的操作复杂度非常高的情况下,可以选择使用选择排序算法。

分享到:
评论

相关推荐

    基于python的排序算法-选择排序Selection Sort

    基于python的排序算法-选择排序Selection Sort

    排序算法-基于C语言实现的排序算法之SelectionSort实现.zip

    排序算法 排序算法_基于C语言实现的排序算法之SelectionSort实现

    python常用排序算法汇总

    # sort.Selectionsort1() #选择排序 # sort.heapSort() #堆排序 # sort.countSort() #计数排序 # sort.quickSort() #快速排序 该排序算法把每次的排序结果都列出来,可供初学者学习。 self.arr存放的是待排序...

    经典算法的C#源码实现

    经典排序算法 - 选择排序Selection sort 经典排序算法 - 鸡尾酒排序Cocktail sort 经典排序算法 - 希尔排序Shell sort 经典排序算法 - 堆排序Heap sort序 经典排序算法 - 地精排序Gnome Sort 经典排序算法 - ...

    C#-基于C#实现的选择排序算法-Selection-Sort.zip

    C#_基于C#实现的选择排序算法_Selection-Sort

    简单的C++排序算法

    选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放...

    Java排序算法实现:冒泡与选择排序示例代码

    选择排序(Selection Sort) 是另一种简单的排序算法,它通过多次遍历数组,在每一轮中选择最小的元素,并将其放置在已排序部分的末尾。选择排序的实现同样通过嵌套的循环来找到最小元素并进行交换。 这些示例代码...

    几种常见排序算法实现

    1.1 SelectionSort:每次选出最下的元素,放在当前循环最左边的位置。 1.2 BubbleSort:每次比较相邻的两个数,使得最大的数像气泡一样冒到最右边。 1. 3 InsertionSort:每次拿起一个数,插入到它左边数组的正确...

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

    java经典算法:选择排序,原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。

    各种排序算法总结

    常用排序算法总结,包括插入排序(InsertionSort),冒泡排序(BubbleSort),选择排序(SelectionSort),快速排序(QuickSort), * 二路归并排序(MergeSort),堆排序(HeapSort)。有每一种排序算法的复杂度分析以及实现...

    十种排序算法介绍

    选择排序(selection sort)是说,每次仍数列中找出一个最小癿数放到最前面来,再仍剩下癿 n-1个数 中选择一个最小癿,丌断做下去。揑入排序(insertion sort)是,每次仍数列中取一个还没有取出过癿数,幵挄照 大小关系...

    Java数据结构及算法实例:选择排序 Selection Sort

    主要介绍了Java数据结构及算法实例:选择排序 Selection Sort,本文直接给出实现代码,代码中包含详细注释,需要的朋友可以参考下

    PHP排序算法之简单选择排序(Simple Selection Sort)实例分析

    本文实例讲述了PHP排序算法之简单选择排序(Simple Selection Sort)。分享给大家供大家参考,具体如下: 基本思想: 通过 n – i 次关键字间的比较,从 n – i + 1 个记录中选出关键字最小的记录,并和第 i (1 &lt;=...

    python常用排序算法(1).docx

    python常用排序算法 Python常用排序算法 排序算法是计算机科学中的基本算法之一,它是将一组数据按照一定的顺序进行排列的过程。在Python中,常用的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序等。...

    python常用排序算法(2).docx

    python常用排序算法 Python常用排序算法 排序算法是计算机科学中的基本算法之一,它是将一组数据按照一定的顺序进行排列的过程。在Python中,常用的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序等。...

    七大排序算法--c语言是实现

    七大排序算法如下: 交换排序:快速排序quicksort,冒泡排序bubblesort...选择排序:直接选择排序selectionsort,堆排序maxheapsort 插入排序:直接插入排序insertsort,希尔排序shellsort 合并排序:归并排序mergesort

    Java常见经典算法详解-选择排序(Selection Sort)

    选择排序(Selection Sort)算法简介:  选择排序是利用逐个选择的方式进行排序,逐个选择出数组中的最小(或最大)的元素,顺序放在已排好序的...现在需要对数组序列 6 1 7 8 9 3 5 4 2 运用选择排序算法从小到大

    基于PHP的基本排序算法(快速排序、堆排序、基数排序等)

    排序算法 - 快速排序(Insert Sort) - 希尔排序(Shell Sort) - 冒泡排序(Bubble Sort) - 快速排序(Quick Sort) - 选择排序(Selection Sort) - 堆排序(Heap Sort) - 归并排序(Merge Sort) - 箱排序(Bin Sort) - 基数...

    python实现五种常见排序算法

    以下是用Python实现的五种常见排序算法: 1. 冒泡排序(Bubble Sort): ```python def bubble_sort(arr): n = len(arr) for i in range(n): for j in range(0, n-i-1): if arr[j] &gt; arr[j+1]: arr[j], arr[j+...

Global site tag (gtag.js) - Google Analytics