排序演算法總結 1 選擇排序

2021-08-01 07:47:48 字數 902 閱讀 6873

選擇排序是最簡單的排序演算法。考慮儲存在陣列a中的n個數:首先找出a中最小的元素並將其與a[0]交換。接著找到a[1]到a[n-1]中最小的數並與a[1]交換。對a中前n-1個數採用同樣的操作。

for i=0 to a.length-1

j=findmin(a,i); //找到a[i,...,end]中最小元素的索引j

if (a[i]>a[j])

swap(a[i],a[j]); //交換a[i]和a[j]

public

class method ;

selectsort(a);

}public

static

void

selectsort(int a)}}

public

static

intfindmin(int array,int index)

}return j;

}

}

時間複雜度:o(n^2)

空間複雜度:o(1) ,原址排序

每進行一次迴圈排序,至少有乙個元素可以確定最終位置。

對於長度為n的陣列,選擇排序需要n(n-1)/2次比較和最多n-1次交換

比較次數:(n

−1)+

(n−2

)+..

.+2+

1=n(

n−1)

/2;

選擇排序的兩個特點:

1、比較次數和輸入無關:在每次迴圈中,為了找到最小元素掃瞄一遍陣列並不能為下一次掃瞄提供有用的資訊。乙個已經有序的陣列或全部元素相同的陣列和乙個隨機排列的陣列比較的次數一樣。

2、資料的移動最少:每次迴圈最多交換一次,所以最多交換n-1次,交換次數和陣列大小成線性關係。

排序演算法 1 選擇排序演算法

這篇部落格分為兩個部分 選擇排序演算法基本思想 實現與解析 由於這個排序演算法比較簡單,因此這篇博文就不做過多解釋了 一.選擇排序演算法基本思想 1 選擇排序 小到大排序 1.遍歷所有未排序的元素 找到最小的那個元素 2.將這個元素與未排序序列的第乙個元素交換位置 3.當剩下乙個元素時 排序結束 o...

排序演算法總結(八)選擇排序

選擇排序思想是每次從陣列中選出最大後最小的數,放到正確的位置,然後在剩餘的數中再次選擇最大或者最小的數放到正確位置,一直重複知道完成排序。include using namespace std selectsort int arrays,int n void main int i selectsor...

排序演算法總結(2) 選擇排序

思路 選擇陣列中的最左邊的元素,下標為0,同時標記此元素為最小元素。將第二個元素與此元素比較,若小於最小元素,則它取而代之成為最小元素。後邊的元素以同樣的道理進行比較和標記,在完全遍歷以後,將具有最小標記的元素和第0個元素進行交換。第二此遍歷的時候則從第二個位置開始進行比較。如下 public cl...