void Selection_sort(ElementType A[],int N){
for(int i=0;i<A.length;i++){
//這一步實(shí)在尋找數(shù)據(jù)源中最小數(shù)
MinPostion = ScanForMin(A,i,N-1);
//將找到的最小數(shù)的下標(biāo)和當(dāng)前的循環(huán)下標(biāo)進(jìn)行對(duì)換
Swap(A[i],A[MinPostion]);
}
}
選擇排序核心思想就是找到最小的數(shù),然后和當(dāng)前下標(biāo)對(duì)換,這樣換著換著就消除了很多逆序?qū)Αr(shí)間復(fù)雜度O(N平方)
static void(int[]group)
{
int temp;
int pos=0;
for(int i=0;i< group.Length-1;i++)
{
pos=i;
for(intj=i+1;j<group.Length;j++)
{
if(group[j]<group[pos])
{
pos=j;
}
}//第i個(gè)數(shù)與最小的數(shù)group[pos]交換
temp=group[i];
group[i]=group[pos];
group[pos]=temp;
}
}
對(duì)比數(shù)組中前一個(gè)元素跟后一個(gè)元素的大小籍琳,如果后面的元素比前面的元素小則用一個(gè)變量k來(lái)記住他的位置,接著第二次比較贷祈,前面“后一個(gè)元素”現(xiàn)變成了“前一個(gè)元素”趋急,繼續(xù)跟他的“后一個(gè)元素”進(jìn)行比較如果后面的元素比他要小則用變量k記住它在數(shù)組中的位置(下標(biāo)),等到循環(huán)結(jié)束的時(shí)候付燥,我們應(yīng)該找到了最小的那個(gè)數(shù)的下標(biāo)了,然后進(jìn)行判斷愈犹,如果這個(gè)元素的下標(biāo)不是第一個(gè)元素的下標(biāo)键科,就讓第一個(gè)元素跟他交換一下值闻丑,這樣就找到整個(gè)數(shù)組中最小的數(shù)了。然后找到數(shù)組中第二小的數(shù)勋颖,讓他跟數(shù)組中第二個(gè)元素交換一下值嗦嗡,以此類推。