【原理】
首先在未排序的數列中找到最小(or最大)元素,然後將其存放到數列的起始位置;接著,再從剩餘未排序的元素中繼續尋找最小(or最大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
【複雜度和穩定性】
(1)選擇排序時間複雜度
選擇排序的時間複雜度是o(n2)。
假設被排序的數列中有n個數。遍歷一趟的時間複雜度是o(n),需要遍歷n-1。
因此,選擇排序的時間複雜度是o(n2)。
(2)選擇排序穩定性
選擇排序是穩定的演算法,它滿足穩定演算法的定義。
演算法穩定性 -- 假設在數列中存在a[i]=a[j],若在排序之前,a[i]在a[j]前面;並且排序之後,a[i]仍然在a[j]前面。則這個排序演算法是穩定的!
【**】
#includeusing namespace std;
template//模板的使用
void selection_sort(t array,const int size);
int main()
selection_sort(a,sizeof(a)/sizeof(int));//呼叫函式,要注意sizeof(a)/sizeof(int)的意義
for(int j=0;j<10;j++)//輸出陣列
{cout{ int min;//確定最小值的陣列下標
int temp;//中間值
for(int m=0;m
排序 2 選擇排序
工具方法類 package mydatastructrueadndalgorith.three.arrsort 陣列為模板排序演算法中的一些公用的模板方法 建立人 曹雪坤 version 1.0.0 public class example 遍歷陣列 public static void show ...
排序 選擇排序(2)
選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到全部待排序的資料元素排完。選擇排序是不穩定的排序方...
排序2 選擇排序 選擇排序 堆排序
選擇排序,依次找到資料集n n 1 n 2 中比它大 小的最大 最小者,最終達到全部資料有序。1 選擇排序 直接的依次找到資料集合n n 1 n 2.的最大 最小者形成排序,非常好理解。選擇排序可能是和氣泡排序一樣,最直觀能想到的排序方法。顯然選擇排序和氣泡排序一樣,無所謂最好 最壞 平均,選擇排序...