C語言 選擇排序之直接選擇排序的特性及實現

2021-10-07 08:23:12 字數 964 閱讀 2035

[c語言] 選擇排序之直接選擇排序的特性及實現

1、演算法特性

直接選擇是一種簡單、不穩定的選擇排序方法,屬於最為基礎的排序方法之一。

其時間複雜度最好情況為o(n²)、最差為o(n²)、平均為o(n²),空間複雜度為o(1)。

2、演算法思路:

以公升序排列為例,先設定乙個臨時變數index_nmax儲存最大值的下標,初始一般假設為下標0,再將選定值與其之後的資料依次比較:當比較值比選擇值大時,index_nmax更新為比較值的下標,之後繼續檢索,直到無序序列結束為止;當比較值小於等於插入值時,index_nmax不更新,選擇值繼續向後檢索,直到無序序列結束為止。一輪迴圈過後將arr[index_nmax]與無序序列隊尾交換位置,經過len-1迴圈便可以將所有資料排列有序。

下圖與本部落格演算法本質上是相同的,部落格中選擇最大值來排序,圖中是選擇最小值來排序:

("排序後:\n");

for(

int i =

0; i <

10; i++

)printf

("%4d"

, arr[i]);

return0;

}int

select_sort

(int arr,

int len)}if

(min != i)

/*找到最小數之後如果它的下標不是i則說明它不在最左邊, 則互換位置*/

}}

C語言 選擇排序

選擇排序 selection sort 是一種簡單直觀的 排序演算法 它的工作原理如下。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。選擇排序的主要優點與資料移動有關。如果...

c語言選擇排序

選擇排序 第一層迴圈從陣列第乙個元素到倒數第二個元素結束 即比較n 1趟 第二層迴圈元素項比第一層的基礎上增加且小於n 選擇排序是比較後前面固定,如果後面的元素比前面的元素大,就將後面的元素 賦給前面,大迴圈沒迴圈1次,就確定了陣列第乙個元素是最小的 include main for i 0 i 8...

c語言 選擇排序

選擇排序是一種基礎演算法,其方法也很簡單。核心思維就是選擇二字,比如在一組給定10個數字的陣列中。第一次選擇10個數字中最大的數字和最後乙個數字進行交換。第二次選擇前9個數字中最大的數字和倒數第二個數字進行交換。第三次選擇前8個數字中最大的數字和倒數第三個數字進行交換。以此類推,最後完成從小到大的排...