在本教程中,您將學習選擇排序的工作方式。此外,您還將找到使用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...