了解選擇排序演算法

2021-10-22 02:01:21 字數 2372 閱讀 6276

在本教程中,您將學習選擇排序的工作方式。此外,您還將找到使用c進行選擇排序的示例。

選擇排序是一種演算法,它在每次迭代中從未排序的列表中選擇最小的元素,並將該元素放在未排序列表的開頭。

選擇排序如何工作?

將第乙個元素設定為 minimum。

將 minimum 與第二個元素進行比較。如果第二個元素小於 minimum,則將第二個元素指定為 minimum。

比較 minimum 和第三個元素。同樣,如果第三個元素較小,則將第三個元素指定為 minimum ,否則什麼也不做。這個過程一直持續到最後乙個元素。

在每次迭代之後, minimum 被放在未排序列表的前面。

對於每次迭代,索引從第乙個未排序的元素開始。重複步驟1到3,直到所有元素都放置在正確的位置。

選擇排序演算法的偽**

selectionsort

(array, size)

repeat (size -

1) times

set the first unsorted element as the minimum

for each of the unsorted elements

if element < currentminimum

set element as new minimum

swap minimum with first unsorted position

end selectionsort

c示例
// selection sort in c

#include

// function to swap the the position of two elements

void

swap

(int

*a,int

*b)void

selectionsort

(int array,

int size)

// put min at the correct position

swap

(&array[min_idx]

,&array[step]);

}}// function to print an array

void

printarray

(int array,

int size)

printf

("\n");

}// driver code

intmain()

;int size =

sizeof

(data)

/sizeof

(data[0]

);selectionsort

(data, size)

;printf

("sorted array in acsending order:\n");

printarray

(data, size)

;}

複雜度

迴圈次數

比較次數

第一次(n-1)

第二次(n-2)

第三次(n-3)……

最後一次

1比較次數:(n - 1) + (n - 2) + (n - 3) + … + 1 = n(n - 1) / 2 約等於 n

2n^2

n2。複雜度=o(n

2n^2

n2)此外,我們可以通過簡單地觀察迴圈的次數來分析複雜性。有2個迴圈,所以複雜度是n*n=n

2n^2

n2。時間複雜度:

參考文件

[1]parewa labs pvt. ltd.selection sort algorithm[eb/ol].

演算法 選擇排序,例項分析選擇排序演算法

選擇排序,將乙個序列看做兩個部分,前面有序,後面無序,每次在後面的無序序列中,選擇乙個最小的元素,交換到前面有序序列的末尾,直到無序序列全部完成交換,即可完成排序 選擇排序是不穩定的排序演算法 有乙個序列 5,2,0,1,3,1,4 第一趟排序 第二趟排序 此時我們看到,經過兩趟排序,前面兩個元素 ...

排序演算法 選擇排序

private static int leftchild int i private static void perc int a,int i,int n for int i 0 ir j break else public static void heasp int r,int n for i 0...

排序演算法 選擇排序

摘自 wiki百科 選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小元素,然後放到排序序列末尾 目前已被排序的序列 以此類推,直到所有元素均排序完畢。c語言實現 vo...