選擇排序,C語言實現

2021-10-08 14:33:59 字數 955 閱讀 7852

下面我們來介紹一下選擇排序。選擇排序的思想是每次都從剩餘的元素中找到最小值,然後把這個最小值放到已經有序的部分元素的後面。這個過程的時間複雜度為o(n),一共需要找n個元素,所以總的時間複雜度是o(n2)。其中,尋找最小值的**如下:

int minindex = i;

int min = arr[i]

;for

(int j = i +

1; j < size; j++

)//尋找最小的元素及下標

}

看到這段**是不是覺得很熟悉?我們在學習dijkstra演算法、prim演算法中都用到了這段**。找到了最小值之後,交換一下minindex和被交換的元素即可。加上乙個判斷,可以小小的優化一下:

if

(minindex != i)

//沒有這個判斷不影響最終結果

下面看一下選擇排序的**:

#include

#include

int arr=

;int size =0;

intswap

(int a,

int b)

void

selectsort()

//選擇排序

}//找到最小的元素後,交換當前的元素與最小的元素

if(minindex != i)

//沒有這個判斷不影響最終結果}}

intmain()

選擇排序的乙個特殊用法 (部分排序):對陣列進行k次排序,可以得到最大 (小) 的第k個值,或最大 (小) 的前k個值。

選擇排序時,採用遍歷的方式在n個元素中找最大 (小) 的元素,時間複雜度是o(n),這是乙個非常慢的操作。如果把這個操作的時間複雜度降低到o(logn),排序速度就會明顯變快。這就是下一小節我們要講的高階形式的選擇排序:堆排序。

選擇排序 C語言實現

選擇排序是一種簡單直觀的排序演算法,它與氣泡排序很相似,都是比較n 1輪,每輪 n 1 i 次每輪找出乙個最大 最小值。只不過冒泡放最後,選擇排序放最左。本文以從小到大排序為例 與冒泡的比較 冒泡是將相鄰的數逐個進行比較 從小到大為例 只要前面的比後面的大,就互換倆數,直到最後將最大的數 浮到 最末...

排序 1 選擇排序 C語言實現

選擇排序的基本思想 選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。我的通俗解釋 第一遍...

排序法值選擇排序(C語言實現)

今天我們來說一下排序法,排序法有分好多種,有比較排序,又有非比較排序。今天我們來說一下比較排序中的選擇排序。所謂選擇,以公升序排序為例,就是將一組資料種最小的選擇出來,放到這組資料的最前面,然後再從剩餘的資料中在選擇乙個最小的 全部次小的 選擇出來,放到這組資料第二個位置。以此類推,直到排序完成。這...